diff --git a/hssrc/Yesod/Auth/JsPath.hs b/hssrc/Yesod/Auth/JsPath.hs
--- a/hssrc/Yesod/Auth/JsPath.hs
+++ b/hssrc/Yesod/Auth/JsPath.hs
@@ -1,9 +1,5 @@
-module Yesod.Auth.JsPath where
-
-import System.IO.Unsafe (unsafePerformIO)
-
-import Paths_yesod_auth_hmac_keccak (getDataFileName)
+module Yesod.Auth.JsPath
+where
 
-jsPath :: FilePath
--- jsPath = unsafePerformIO (getDataFileName "static/js/auth.js")
+jsPath :: String
 jsPath = "static/js/auth.js"
diff --git a/static/js/auth.js b/static/js/auth.js
--- a/static/js/auth.js
+++ b/static/js/auth.js
@@ -6606,25361 +6606,28519 @@
 
 }));
 },{"./core":3}],35:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Common = require("../Common");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Aff = require("../Control.Monad.Aff");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Console = require("../Control.Monad.Eff.Console");
-var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
-var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
-var DOM = require("../DOM");
-var Data_Eq = require("../Data.Eq");
-var Data_FormURLEncoded = require("../Data.FormURLEncoded");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Show = require("../Data.Show");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Network_HTTP_Affjax = require("../Network.HTTP.Affjax");
-var Network_HTTP_Affjax_Request = require("../Network.HTTP.Affjax.Request");
-var Network_HTTP_Affjax_Response = require("../Network.HTTP.Affjax.Response");
-var Partial_Unsafe = require("../Partial.Unsafe");
-var Prelude = require("../Prelude");
-var onActivateClick = function (activate) {
-    return function (ev) {
-        return function (v) {
-            return function __do() {
-                Control_Monad_Eff_JQuery.preventDefault(ev)();
-                var v1 = Common.getAttr("data-token")(activate)();
-                var v2 = Common.getAttr("data-salt")(activate)();
-                var v3 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#password1"))();
-                var v4 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#password2"))();
-                var v5 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Common.getAttr("action"))(Control_Monad_Eff_JQuery.select("#activateform"))();
-                Control_Monad_Eff_Console.log(v5)();
-                var password2 = Common.fromForeign(v4);
-                var password1 = Common.fromForeign(v3);
-                var $13 = !(Data_Maybe.isNothing(password1) && Data_Maybe.isNothing(password2));
-                if ($13) {
-                    var $14 = Data_Eq.eq(Data_Maybe.eqMaybe(Data_Eq.eqString))(password1)(password2);
-                    if ($14) {
-                        Common.progress("Salting password")();
-                        var salted = Common.hmacSha3(Common.fromUtf8(Data_Maybe.fromJust()(password1)), Common.fromHex(v2));
-                        Common.progress("Requesting account activation...")();
-                        var dat = Data_FormURLEncoded.fromArray([ new Data_Tuple.Tuple("salted", new Data_Maybe.Just(salted)) ]);
-                        var v6 = Control_Monad_Aff.runAff(function (e) {
-                            return Common.fail(Common.Activate.value)(Data_Show.show(Control_Monad_Eff_Exception.showError)(e));
-                        })(function (x) {
-                            return Common.welcome(x.response)(Common.Activate.value);
-                        })(Network_HTTP_Affjax.post(Network_HTTP_Affjax_Request.requestableFormURLEncoded)(Network_HTTP_Affjax_Response.responsableJson)(v5)(dat))();
-                        return Data_Unit.unit;
-                    };
-                    return Common.fail(Common.Activate.value)("Passwords must match")();
-                };
-                return Common.fail(Common.Activate.value)("Passwords error")();
-            };
-        };
-    };
-};
-module.exports = {
-    onActivateClick: onActivateClick
-};
-
-},{"../Common":37,"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":55,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Console":60,"../Control.Monad.Eff.Exception":62,"../Control.Monad.Eff.JQuery":64,"../DOM":100,"../Data.Eq":138,"../Data.FormURLEncoded":146,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Show":233,"../Data.Tuple":245,"../Data.Unit":249,"../Network.HTTP.Affjax":260,"../Network.HTTP.Affjax.Request":257,"../Network.HTTP.Affjax.Response":258,"../Partial.Unsafe":265,"../Prelude":268}],36:[function(require,module,exports){
-"use strict";
-
-var CryptoJS = require('crypto-js');
-
-exports.hmacSha3 = function(msg, key) {
-	var hmac  = CryptoJS.HmacSHA3(msg, key);
-	//console.log("bla");
-	//console.log(hmac.toString());
-	//console.log(CryptoJS.enc.Utf8.stringify(hmac));
-	return hmac.toString();
-}
-
-exports.setLocation = function(newLoc) {
-	window.location = newLoc;
-  return null;
-}
-
-exports.getAttr = function(attr) {
-    return function(ob) {
-        return function() {
-            return ob.attr(attr);
-        };
-    };
-};
-
-exports.toHex = function(str) {
-	var repr = parseInt(str, 16);
-	return repr.toString(16);
-}
-
-exports.fromHex = function(str) {
-	return CryptoJS.enc.Hex.parse(str);
-}
-
-exports.fromUtf8 = function(str) {
-	return CryptoJS.enc.Utf8.parse(str);
-}
-
-},{"crypto-js":9}],37:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
-var Control_Monad_Except = require("../Control.Monad.Except");
-var DOM = require("../DOM");
-var Data_Argonaut = require("../Data.Argonaut");
-var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
-var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
-var Data_Argonaut_Decode_Combinators = require("../Data.Argonaut.Decode.Combinators");
-var Data_Either = require("../Data.Either");
-var Data_Foreign = require("../Data.Foreign");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_Functor = require("../Data.Functor");
-var Data_Maybe = require("../Data.Maybe");
-var Prelude = require("../Prelude");
-var Welcome = (function () {
-    function Welcome(value0) {
-        this.value0 = value0;
-    };
-    Welcome.create = function (value0) {
-        return new Welcome(value0);
-    };
-    return Welcome;
-})();
-var Err = (function () {
-    function Err(value0) {
-        this.value0 = value0;
-    };
-    Err.create = function (value0) {
-        return new Err(value0);
-    };
-    return Err;
-})();
-var Login = (function () {
-    function Login() {
-
-    };
-    Login.value = new Login();
-    return Login;
-})();
-var Activate = (function () {
-    function Activate() {
-
-    };
-    Activate.value = new Activate();
-    return Activate;
-})();
-var Challenge = (function () {
-    function Challenge(value0) {
-        this.value0 = value0;
-    };
-    Challenge.create = function (value0) {
-        return new Challenge(value0);
-    };
-    return Challenge;
-})();
-var progress = function (s) {
-    return Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.setText(s))(Control_Monad_Eff_JQuery.select("#progress"));
-};
-var fromForeign = function (f) {
-    var v = Control_Monad_Except.runExcept(Data_Foreign.readString(f));
-    if (v instanceof Data_Either.Left) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (v instanceof Data_Either.Right) {
-        return new Data_Maybe.Just(v.value0);
-    };
-    throw new Error("Failed pattern match at Common line 77, column 17 - line 79, column 20: " + [ v.constructor.name ]);
-};
-var fail = function (v) {
-    return function (s) {
-        if (v instanceof Login) {
-            return function __do() {
-                progress(s)();
-                var v1 = Data_Functor.map(Control_Monad_Eff.functorEff)(Control_Monad_Eff_JQuery.setProp("disabled")(false))(Control_Monad_Eff_JQuery.select(".login input"))();
-                return Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.display)(Control_Monad_Eff_JQuery.select("#login"))();
-            };
-        };
-        if (v instanceof Activate) {
-            return function __do() {
-                progress(s)();
-                var v1 = Data_Functor.map(Control_Monad_Eff.functorEff)(Control_Monad_Eff_JQuery.setProp("disabled")(false))(Control_Monad_Eff_JQuery.select(".activate input"))();
-                return Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.display)(Control_Monad_Eff_JQuery.select("#activate"))();
-            };
-        };
-        throw new Error("Failed pattern match at Common line 35, column 1 - line 39, column 1: " + [ v.constructor.name, s.constructor.name ]);
-    };
-};
-var decodeJsonWelcome = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
-    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeStrMap(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(function (v) {
-        return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("welcome"))(function (v1) {
-            return Control_Applicative.pure(Data_Either.applicativeEither)(new Welcome({
-                link: v1
-            }));
-        });
-    });
-});
-var decodeJsonErr = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
-    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeStrMap(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(function (v) {
-        return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("error"))(function (v1) {
-            return Control_Applicative.pure(Data_Either.applicativeEither)(new Err({
-                err: v1
-            }));
-        });
-    });
-});
-var welcome = function (j) {
-    return function (elem) {
-        var eitherWelcome = Data_Argonaut_Decode_Class.decodeJson(decodeJsonWelcome)(j);
-        if (eitherWelcome instanceof Data_Either.Left) {
-            var eitherErr = Data_Argonaut_Decode_Class.decodeJson(decodeJsonErr)(j);
-            return Data_Either.either(fail(elem))(function (v) {
-                return fail(elem)(v.value0.err);
-            })(eitherErr);
-        };
-        if (eitherWelcome instanceof Data_Either.Right) {
-            return function __do() {
-                progress("Welcome!")();
-                return $foreign.setLocation(eitherWelcome.value0.value0.link)();
-            };
-        };
-        throw new Error("Failed pattern match at Common line 22, column 3 - line 28, column 28: " + [ eitherWelcome.constructor.name ]);
-    };
-};
-var decodeJsonChallenge = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
-    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeStrMap(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(function (v) {
-        return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("salt"))(function (v1) {
-            return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("token"))(function (v2) {
-                return Control_Applicative.pure(Data_Either.applicativeEither)(new Challenge({
-                    salt: v1, 
-                    token: v2
-                }));
-            });
-        });
-    });
-});
-module.exports = {
-    Challenge: Challenge, 
-    Login: Login, 
-    Activate: Activate, 
-    Err: Err, 
-    Welcome: Welcome, 
-    fail: fail, 
-    fromForeign: fromForeign, 
-    progress: progress, 
-    welcome: welcome, 
-    decodeJsonChallenge: decodeJsonChallenge, 
-    decodeJsonWelcome: decodeJsonWelcome, 
-    decodeJsonErr: decodeJsonErr, 
-    fromHex: $foreign.fromHex, 
-    fromUtf8: $foreign.fromUtf8, 
-    getAttr: $foreign.getAttr, 
-    hmacSha3: $foreign.hmacSha3, 
-    setLocation: $foreign.setLocation, 
-    toHex: $foreign.toHex
-};
-
-},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Eff":70,"../Control.Monad.Eff.JQuery":64,"../Control.Monad.Except":73,"../DOM":100,"../Data.Argonaut":114,"../Data.Argonaut.Decode":105,"../Data.Argonaut.Decode.Class":103,"../Data.Argonaut.Decode.Combinators":104,"../Data.Either":136,"../Data.Foreign":145,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.Functor":155,"../Data.Maybe":198,"../Prelude":268,"./foreign":36}],38:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Functor = require("../Data.Functor");
-var Data_Semigroup = require("../Data.Semigroup");
-var Alt = function (Functor0, alt) {
-    this.Functor0 = Functor0;
-    this.alt = alt;
-};
-var altArray = new Alt(function () {
-    return Data_Functor.functorArray;
-}, Data_Semigroup.append(Data_Semigroup.semigroupArray));
-var alt = function (dict) {
-    return dict.alt;
-};
-module.exports = {
-    Alt: Alt, 
-    alt: alt, 
-    altArray: altArray
-};
-
-},{"../Data.Functor":155,"../Data.Semigroup":229}],39:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Plus = require("../Control.Plus");
-var Data_Functor = require("../Data.Functor");
-var Alternative = function (Applicative0, Plus1) {
-    this.Applicative0 = Applicative0;
-    this.Plus1 = Plus1;
-};
-var alternativeArray = new Alternative(function () {
-    return Control_Applicative.applicativeArray;
-}, function () {
-    return Control_Plus.plusArray;
-});
-module.exports = {
-    Alternative: Alternative, 
-    alternativeArray: alternativeArray
-};
-
-},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Plus":91,"../Data.Functor":155}],40:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Apply = require("../Control.Apply");
-var Data_Functor = require("../Data.Functor");
-var Data_Unit = require("../Data.Unit");
-var Applicative = function (Apply0, pure) {
-    this.Apply0 = Apply0;
-    this.pure = pure;
-};
-var pure = function (dict) {
-    return dict.pure;
-};
-var unless = function (dictApplicative) {
-    return function (v) {
-        return function (v1) {
-            if (!v) {
-                return v1;
-            };
-            if (v) {
-                return pure(dictApplicative)(Data_Unit.unit);
-            };
-            throw new Error("Failed pattern match at Control.Applicative line 63, column 1 - line 63, column 19: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var when = function (dictApplicative) {
-    return function (v) {
-        return function (v1) {
-            if (v) {
-                return v1;
-            };
-            if (!v) {
-                return pure(dictApplicative)(Data_Unit.unit);
-            };
-            throw new Error("Failed pattern match at Control.Applicative line 58, column 1 - line 58, column 16: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var liftA1 = function (dictApplicative) {
-    return function (f) {
-        return function (a) {
-            return Control_Apply.apply(dictApplicative.Apply0())(pure(dictApplicative)(f))(a);
-        };
-    };
-};
-var applicativeFn = new Applicative(function () {
-    return Control_Apply.applyFn;
-}, function (x) {
-    return function (v) {
-        return x;
-    };
-});
-var applicativeArray = new Applicative(function () {
-    return Control_Apply.applyArray;
-}, function (x) {
-    return [ x ];
-});
-module.exports = {
-    Applicative: Applicative, 
-    liftA1: liftA1, 
-    pure: pure, 
-    unless: unless, 
-    when: when, 
-    applicativeFn: applicativeFn, 
-    applicativeArray: applicativeArray
-};
-
-},{"../Control.Apply":42,"../Data.Functor":155,"../Data.Unit":249}],41:[function(require,module,exports){
-"use strict";
-
-exports.arrayApply = function (fs) {
-  return function (xs) {
-    var result = [];
-    var n = 0;
-    for (var i = 0, l = fs.length; i < l; i++) {
-      for (var j = 0, k = xs.length; j < k; j++) {
-        result[n++] = fs[i](xs[j]);
-      }
-    }
-    return result;
-  };
-};
-
-},{}],42:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Category = require("../Control.Category");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Apply = function (Functor0, apply) {
-    this.Functor0 = Functor0;
-    this.apply = apply;
-};
-var applyFn = new Apply(function () {
-    return Data_Functor.functorFn;
-}, function (f) {
-    return function (g) {
-        return function (x) {
-            return f(x)(g(x));
-        };
-    };
-});
-var applyArray = new Apply(function () {
-    return Data_Functor.functorArray;
-}, $foreign.arrayApply);
-var apply = function (dict) {
-    return dict.apply;
-};
-var applyFirst = function (dictApply) {
-    return function (a) {
-        return function (b) {
-            return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Data_Function["const"])(a))(b);
-        };
-    };
-};
-var applySecond = function (dictApply) {
-    return function (a) {
-        return function (b) {
-            return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Data_Function["const"](Control_Category.id(Control_Category.categoryFn)))(a))(b);
-        };
-    };
-};
-var lift2 = function (dictApply) {
-    return function (f) {
-        return function (a) {
-            return function (b) {
-                return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b);
-            };
-        };
-    };
-};
-var lift3 = function (dictApply) {
-    return function (f) {
-        return function (a) {
-            return function (b) {
-                return function (c) {
-                    return apply(dictApply)(apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b))(c);
-                };
-            };
-        };
-    };
-};
-var lift4 = function (dictApply) {
-    return function (f) {
-        return function (a) {
-            return function (b) {
-                return function (c) {
-                    return function (d) {
-                        return apply(dictApply)(apply(dictApply)(apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b))(c))(d);
-                    };
-                };
-            };
-        };
-    };
-};
-var lift5 = function (dictApply) {
-    return function (f) {
-        return function (a) {
-            return function (b) {
-                return function (c) {
-                    return function (d) {
-                        return function (e) {
-                            return apply(dictApply)(apply(dictApply)(apply(dictApply)(apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b))(c))(d))(e);
-                        };
-                    };
-                };
-            };
-        };
-    };
-};
-module.exports = {
-    Apply: Apply, 
-    apply: apply, 
-    applyFirst: applyFirst, 
-    applySecond: applySecond, 
-    lift2: lift2, 
-    lift3: lift3, 
-    lift4: lift4, 
-    lift5: lift5, 
-    applyFn: applyFn, 
-    applyArray: applyArray
-};
-
-},{"../Control.Category":47,"../Data.Function":149,"../Data.Functor":155,"./foreign":41}],43:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Biapply = require("../Control.Biapply");
-var Biapplicative = function (Biapply0, bipure) {
-    this.Biapply0 = Biapply0;
-    this.bipure = bipure;
-};
-var bipure = function (dict) {
-    return dict.bipure;
-};
-module.exports = {
-    Biapplicative: Biapplicative, 
-    bipure: bipure
-};
-
-},{"../Control.Biapply":44}],44:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Function = require("../Data.Function");
-var Biapply = function (Bifunctor0, biapply) {
-    this.Bifunctor0 = Bifunctor0;
-    this.biapply = biapply;
-};
-var biapply = function (dict) {
-    return dict.biapply;
-};
-var biapplyFirst = function (dictBiapply) {
-    return function (a) {
-        return function (b) {
-            return biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(Data_Function["const"](Control_Category.id(Control_Category.categoryFn)))(Data_Function["const"](Control_Category.id(Control_Category.categoryFn))))(a))(b);
-        };
-    };
-};
-var biapplySecond = function (dictBiapply) {
-    return function (a) {
-        return function (b) {
-            return biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(Data_Function["const"])(Data_Function["const"]))(a))(b);
-        };
-    };
-};
-var bilift2 = function (dictBiapply) {
-    return function (f) {
-        return function (g) {
-            return function (a) {
-                return function (b) {
-                    return biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(f)(g))(a))(b);
-                };
-            };
-        };
-    };
-};
-var bilift3 = function (dictBiapply) {
-    return function (f) {
-        return function (g) {
-            return function (a) {
-                return function (b) {
-                    return function (c) {
-                        return biapply(dictBiapply)(biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(f)(g))(a))(b))(c);
-                    };
-                };
-            };
-        };
-    };
-};
-module.exports = {
-    Biapply: Biapply, 
-    biapply: biapply, 
-    biapplyFirst: biapplyFirst, 
-    biapplySecond: biapplySecond, 
-    bilift2: bilift2, 
-    bilift3: bilift3
-};
-
-},{"../Control.Category":47,"../Data.Bifunctor":127,"../Data.Function":149}],45:[function(require,module,exports){
-"use strict";
-
-exports.arrayBind = function (arr) {
-  return function (f) {
-    var result = [];
-    for (var i = 0, l = arr.length; i < l; i++) {
-      Array.prototype.push.apply(result, f(arr[i]));
-    }
-    return result;
-  };
-};
-
-},{}],46:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Unit = require("../Data.Unit");
-var Bind = function (Apply0, bind) {
-    this.Apply0 = Apply0;
-    this.bind = bind;
-};
-var Discard = function (discard) {
-    this.discard = discard;
-};
-var discard = function (dict) {
-    return dict.discard;
-};
-var bindFn = new Bind(function () {
-    return Control_Apply.applyFn;
-}, function (m) {
-    return function (f) {
-        return function (x) {
-            return f(m(x))(x);
-        };
-    };
-});
-var bindArray = new Bind(function () {
-    return Control_Apply.applyArray;
-}, $foreign.arrayBind);
-var bind = function (dict) {
-    return dict.bind;
-};
-var bindFlipped = function (dictBind) {
-    return Data_Function.flip(bind(dictBind));
-};
-var composeKleisliFlipped = function (dictBind) {
-    return function (f) {
-        return function (g) {
-            return function (a) {
-                return bindFlipped(dictBind)(f)(g(a));
-            };
-        };
-    };
-};
-var composeKleisli = function (dictBind) {
-    return function (f) {
-        return function (g) {
-            return function (a) {
-                return bind(dictBind)(f(a))(g);
-            };
-        };
-    };
-};
-var discardUnit = new Discard(function (dictBind) {
-    return bind(dictBind);
-});
-var ifM = function (dictBind) {
-    return function (cond) {
-        return function (t) {
-            return function (f) {
-                return bind(dictBind)(cond)(function (cond$prime) {
-                    if (cond$prime) {
-                        return t;
-                    };
-                    return f;
-                });
-            };
-        };
-    };
-};
-var join = function (dictBind) {
-    return function (m) {
-        return bind(dictBind)(m)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-module.exports = {
-    Bind: Bind, 
-    Discard: Discard, 
-    bind: bind, 
-    bindFlipped: bindFlipped, 
-    composeKleisli: composeKleisli, 
-    composeKleisliFlipped: composeKleisliFlipped, 
-    discard: discard, 
-    ifM: ifM, 
-    join: join, 
-    bindFn: bindFn, 
-    bindArray: bindArray, 
-    discardUnit: discardUnit
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Data.Function":149,"../Data.Functor":155,"../Data.Unit":249,"./foreign":45}],47:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Category = function (Semigroupoid0, id) {
-    this.Semigroupoid0 = Semigroupoid0;
-    this.id = id;
-};
-var id = function (dict) {
-    return dict.id;
-};
-var categoryFn = new Category(function () {
-    return Control_Semigroupoid.semigroupoidFn;
-}, function (x) {
-    return x;
-});
-module.exports = {
-    Category: Category, 
-    id: id, 
-    categoryFn: categoryFn
-};
-
-},{"../Control.Semigroupoid":92}],48:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Extend = require("../Control.Extend");
-var Data_Functor = require("../Data.Functor");
-var Comonad = function (Extend0, extract) {
-    this.Extend0 = Extend0;
-    this.extract = extract;
-};
-var extract = function (dict) {
-    return dict.extract;
-};
-module.exports = {
-    Comonad: Comonad, 
-    extract: extract
-};
-
-},{"../Control.Extend":49,"../Data.Functor":155}],49:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Data_Functor = require("../Data.Functor");
-var Data_Semigroup = require("../Data.Semigroup");
-var Extend = function (Functor0, extend) {
-    this.Functor0 = Functor0;
-    this.extend = extend;
-};
-var extendFn = function (dictSemigroup) {
-    return new Extend(function () {
-        return Data_Functor.functorFn;
-    }, function (f) {
-        return function (g) {
-            return function (w) {
-                return f(function (w$prime) {
-                    return g(Data_Semigroup.append(dictSemigroup)(w)(w$prime));
-                });
-            };
-        };
-    });
-};
-var extend = function (dict) {
-    return dict.extend;
-};
-var extendFlipped = function (dictExtend) {
-    return function (w) {
-        return function (f) {
-            return extend(dictExtend)(f)(w);
-        };
-    };
-};
-var duplicate = function (dictExtend) {
-    return extend(dictExtend)(Control_Category.id(Control_Category.categoryFn));
-};
-var composeCoKleisliFlipped = function (dictExtend) {
-    return function (f) {
-        return function (g) {
-            return function (w) {
-                return f(extend(dictExtend)(g)(w));
-            };
-        };
-    };
-};
-var composeCoKleisli = function (dictExtend) {
-    return function (f) {
-        return function (g) {
-            return function (w) {
-                return g(extend(dictExtend)(f)(w));
-            };
-        };
-    };
-};
-module.exports = {
-    Extend: Extend, 
-    composeCoKleisli: composeCoKleisli, 
-    composeCoKleisliFlipped: composeCoKleisliFlipped, 
-    duplicate: duplicate, 
-    extend: extend, 
-    extendFlipped: extendFlipped, 
-    extendFn: extendFn
-};
-
-},{"../Control.Category":47,"../Data.Functor":155,"../Data.Semigroup":229}],50:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Unit = require("../Data.Unit");
-var Lazy = function (defer) {
-    this.defer = defer;
-};
-var defer = function (dict) {
-    return dict.defer;
-};
-var fix = function (dictLazy) {
-    return function (f) {
-        return defer(dictLazy)(function (v) {
-            return f(fix(dictLazy)(f));
-        });
-    };
-};
-module.exports = {
-    Lazy: Lazy, 
-    defer: defer, 
-    fix: fix
-};
-
-},{"../Data.Unit":249}],51:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Aff = require("../Control.Monad.Aff");
-var Control_Monad_Aff_Internal = require("../Control.Monad.Aff.Internal");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var fromAVBox = Unsafe_Coerce.unsafeCoerce;
-var killVar = function (q) {
-    return function (e) {
-        return fromAVBox(Control_Monad_Aff_Internal._killVar(Control_Monad_Aff.nonCanceler, q, e));
-    };
-};
-var makeVar = fromAVBox(Control_Monad_Aff_Internal._makeVar(Control_Monad_Aff.nonCanceler));
-var peekVar = function (q) {
-    return fromAVBox(Control_Monad_Aff_Internal._peekVar(Control_Monad_Aff.nonCanceler, q));
-};
-var putVar = function (q) {
-    return function (a) {
-        return fromAVBox(Control_Monad_Aff_Internal._putVar(Control_Monad_Aff.nonCanceler, q, a));
-    };
-};
-var makeVar$prime = function (a) {
-    return Control_Bind.bind(Control_Monad_Aff.bindAff)(makeVar)(function (v) {
-        return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(putVar(v)(a))(function () {
-            return Control_Applicative.pure(Control_Monad_Aff.applicativeAff)(v);
-        });
-    });
-};
-var takeVar = function (q) {
-    return fromAVBox(Control_Monad_Aff_Internal._takeVar(Control_Monad_Aff.nonCanceler, q));
-};
-var modifyVar = function (f) {
-    return function (v) {
-        return Control_Bind.bind(Control_Monad_Aff.bindAff)(takeVar(v))(function ($2) {
-            return putVar(v)(f($2));
-        });
-    };
-};
-module.exports = {
-    killVar: killVar, 
-    makeVar: makeVar, 
-    "makeVar'": makeVar$prime, 
-    modifyVar: modifyVar, 
-    peekVar: peekVar, 
-    putVar: putVar, 
-    takeVar: takeVar
-};
-
-},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":55,"../Control.Monad.Aff.Internal":53,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Exception":62,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Prelude":268,"../Unsafe.Coerce":271}],52:[function(require,module,exports){
-"use strict";
-
-exports._makeVar = function (nonCanceler) {
-  return function (success) {
-    success({
-      consumers: [],
-      producers: [],
-      error: undefined
-    });
-    return nonCanceler;
-  };
-};
-
-exports._takeVar = function (nonCanceler, avar) {
-  return function (success, error) {
-    if (avar.error !== undefined) {
-      error(avar.error);
-    } else if (avar.producers.length > 0) {
-      avar.producers.shift()(success, error);
-    } else {
-      avar.consumers.push({ peek: false, success: success, error: error });
-    }
-
-    return nonCanceler;
-  };
-};
-
-exports._peekVar = function (nonCanceler, avar) {
-  return function (success, error) {
-    if (avar.error !== undefined) {
-      error(avar.error);
-    } else if (avar.producers.length > 0) {
-      avar.producers[0](success, error);
-    } else {
-      avar.consumers.push({ peek: true, success: success, error: error });
-    }
-    return nonCanceler;
-  };
-};
-
-exports._putVar = function (nonCanceler, avar, a) {
-  return function (success, error) {
-    if (avar.error !== undefined) {
-      error(avar.error);
-    } else {
-      var shouldQueue = true;
-      var consumers = [];
-      var consumer;
-
-      while (true) {
-        consumer = avar.consumers.shift();
-        if (consumer) {
-          consumers.push(consumer);
-          if (consumer.peek) {
-            continue;
-          } else {
-            shouldQueue = false;
-          }
-        }
-        break;
-      }
-
-      if (shouldQueue) {
-        avar.producers.push(function (success) {
-          success(a);
-          return nonCanceler;
-        });
-      }
-
-      for (var i = 0; i < consumers.length; i++) {
-        consumers[i].success(a);
-      }
-
-      success({});
-    }
-
-    return nonCanceler;
-  };
-};
-
-exports._killVar = function (nonCanceler, avar, e) {
-  return function (success, error) {
-    if (avar.error !== undefined) {
-      error(avar.error);
-    } else {
-      avar.error = e;
-      while (avar.consumers.length) {
-        avar.consumers.shift().error(e);
-      }
-      success({});
-    }
-
-    return nonCanceler;
-  };
-};
-
-},{}],53:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Prelude = require("../Prelude");
-module.exports = {
-    _killVar: $foreign._killVar, 
-    _makeVar: $foreign._makeVar, 
-    _peekVar: $foreign._peekVar, 
-    _putVar: $foreign._putVar, 
-    _takeVar: $foreign._takeVar
-};
-
-},{"../Control.Monad.Eff.Exception":62,"../Data.Function.Uncurried":148,"../Prelude":268,"./foreign":52}],54:[function(require,module,exports){
-/* globals setTimeout, clearTimeout, setImmediate, clearImmediate */
-"use strict";
-
-exports._cancelWith = function (nonCanceler, aff, canceler1) {
-  return function (success, error) {
-    var canceler2 = aff(success, error);
-
-    return function (e) {
-      return function (success, error) {
-        var cancellations = 0;
-        var result = false;
-        var errored = false;
-
-        var s = function (bool) {
-          cancellations = cancellations + 1;
-          result = result || bool;
-
-          if (cancellations === 2 && !errored) {
-            success(result);
-          }
-        };
-
-        var f = function (err) {
-          if (!errored) {
-            errored = true;
-            error(err);
-          }
-        };
-
-        canceler2(e)(s, f);
-        canceler1(e)(s, f);
-
-        return nonCanceler;
-      };
-    };
-  };
-};
-
-exports._delay = function (nonCanceler, millis) {
-  var set = setTimeout;
-  var clear = clearTimeout;
-  if (millis <= 0 && typeof setImmediate === "function") {
-    set = setImmediate;
-    clear = clearImmediate;
-  }
-  return function (success) {
-    var timedOut = false;
-    var timer = set(function () {
-      timedOut = true;
-      success();
-    }, millis);
-
-    return function () {
-      return function (s) {
-        if (timedOut) {
-          s(false);
-        } else {
-          clear(timer);
-          s(true);
-        }
-        return nonCanceler;
-      };
-    };
-  };
-};
-
-exports._unsafeInterleaveAff = function (aff) {
-  return aff;
-};
-
-exports._forkAff = function (nonCanceler, aff) {
-  var voidF = function () {};
-
-  return function (success) {
-    var canceler = aff(voidF, voidF);
-    success(canceler);
-    return nonCanceler;
-  };
-};
-
-exports._forkAll = function (nonCanceler, foldl, affs) {
-  var voidF = function () {};
-
-  return function (success) {
-    var cancelers = foldl(function (acc) {
-      return function (aff) {
-        acc.push(aff(voidF, voidF));
-        return acc;
-      };
-    })([])(affs);
-
-    var canceler = function (e) {
-      return function (success, error) {
-        var cancellations = 0;
-        var result        = false;
-        var errored       = false;
-
-        var s = function (bool) {
-          cancellations = cancellations + 1;
-          result        = result || bool;
-
-          if (cancellations === cancelers.length && !errored) {
-            success(result);
-          }
-        };
-
-        var f = function (err) {
-          if (!errored) {
-            errored = true;
-            error(err);
-          }
-        };
-
-        for (var i = 0; i < cancelers.length; i++) {
-          cancelers[i](e)(s, f);
-        }
-
-        return nonCanceler;
-      };
-    };
-
-    success(canceler);
-    return nonCanceler;
-  };
-};
-
-exports._makeAff = function (cb) {
-  return function (success, error) {
-    try {
-      return cb(function (e) {
-        return function () {
-          error(e);
-        };
-      })(function (v) {
-        return function () {
-          success(v);
-        };
-      })();
-    } catch (err) {
-      error(err);
-    }
-  };
-};
-
-exports._pure = function (nonCanceler, v) {
-  return function (success) {
-    success(v);
-    return nonCanceler;
-  };
-};
-
-exports._throwError = function (nonCanceler, e) {
-  return function (success, error) {
-    error(e);
-    return nonCanceler;
-  };
-};
-
-exports._fmap = function (f, aff) {
-  return function (success, error) {
-    return aff(function (v) {
-      success(f(v));
-    }, error);
-  };
-};
-
-exports._bind = function (alwaysCanceler, aff, f) {
-  return function (success, error) {
-    var canceler1, canceler2;
-
-    var isCanceled    = false;
-    var requestCancel = false;
-
-    var onCanceler = function () {};
-
-    canceler1 = aff(function (v) {
-      if (requestCancel) {
-        isCanceled = true;
-
-        return alwaysCanceler;
-      } else {
-        canceler2 = f(v)(success, error);
-
-        onCanceler(canceler2);
-
-        return canceler2;
-      }
-    }, error);
-
-    return function (e) {
-      return function (s, f) {
-        requestCancel = true;
-
-        if (canceler2 !== undefined) {
-          return canceler2(e)(s, f);
-        } else {
-          return canceler1(e)(function (bool) {
-            if (bool || isCanceled) {
-              s(true);
-            } else {
-              onCanceler = function (canceler) {
-                canceler(e)(s, f);
-              };
-            }
-          }, f);
-        }
-      };
-    };
-  };
-};
-
-exports._attempt = function (Left, Right, aff) {
-  return function (success) {
-    return aff(function (v) {
-      success(Right(v));
-    }, function (e) {
-      success(Left(e));
-    });
-  };
-};
-
-exports._runAff = function (errorT, successT, aff) {
-  // If errorT or successT throw, and an Aff is comprised only of synchronous
-  // effects, then it's possible for makeAff/liftEff to accidentally catch
-  // it, which may end up rerunning the Aff depending on error recovery
-  // behavior. To mitigate this, we observe synchronicity using mutation. If
-  // an Aff is observed to be synchronous, we let the stack reset and run the
-  // handlers outside of the normal callback flow.
-  return function () {
-    var status = 0;
-    var result, success;
-
-    var canceler = aff(function (v) {
-      if (status === 2) {
-        successT(v)();
-      } else {
-        status = 1;
-        result = v;
-        success = true;
-      }
-    }, function (e) {
-      if (status === 2) {
-        errorT(e)();
-      } else {
-        status = 1;
-        result = e;
-        success = false;
-      }
-    });
-
-    if (status === 1) {
-      if (success) {
-        successT(result)();
-      } else {
-        errorT(result)();
-      }
-    } else {
-      status = 2;
-    }
-
-    return canceler;
-  };
-};
-
-exports._liftEff = function (nonCanceler, e) {
-  return function (success, error) {
-    var result;
-    try {
-      result = e();
-    } catch (err) {
-      error(err);
-      return nonCanceler;
-    }
-
-    success(result);
-    return nonCanceler;
-  };
-};
-
-exports._tailRecM = function (isLeft, f, a) {
-  return function (success, error) {
-    return function go (acc) {
-      var result, status, canceler;
-
-      // Observes synchronous effects using a flag.
-      //   status = 0 (unresolved status)
-      //   status = 1 (synchronous effect)
-      //   status = 2 (asynchronous effect)
-
-      var csuccess = function (v) {
-        // If the status is still unresolved, we have observed a
-        // synchronous effect. Otherwise, the status will be `2`.
-        if (status === 0) {
-          // Store the result for further synchronous processing.
-          result = v;
-          status = 1;
-        } else {
-          // When we have observed an asynchronous effect, we use normal
-          // recursion. This is safe because we will be on a new stack.
-          if (isLeft(v)) {
-            go(v.value0);
-          } else {
-            success(v.value0);
-          }
-        }
-      };
-
-      while (true) {
-        status = 0;
-        canceler = f(acc)(csuccess, error);
-
-        // If the status has already resolved to `1` by our Aff handler, then
-        // we have observed a synchronous effect. Otherwise it will still be
-        // `0`.
-        if (status === 1) {
-          // When we have observed a synchronous effect, we merely swap out the
-          // accumulator and continue the loop, preserving stack.
-          if (isLeft(result)) {
-            acc = result.value0;
-            continue;
-          } else {
-            success(result.value0);
-          }
-        } else {
-          // If the status has not resolved yet, then we have observed an
-          // asynchronous effect.
-          status = 2;
-        }
-        return canceler;
-      }
-
-    }(a);
-  };
-};
-
-},{}],55:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Aff_Internal = require("../Control.Monad.Aff.Internal");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Parallel = require("../Control.Parallel");
-var Control_Parallel_Class = require("../Control.Parallel.Class");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Time_Duration = require("../Data.Time.Duration");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var ParAff = function (x) {
-    return x;
-};
-var Canceler = function (x) {
-    return x;
-};
-var runAff = function (ex) {
-    return function (f) {
-        return function (aff) {
-            return $foreign._runAff(ex, f, aff);
-        };
-    };
-};
-var newtypeParAff = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, ParAff);
-var makeAff$prime = function (h) {
-    return $foreign._makeAff(h);
-};
-var functorAff = new Data_Functor.Functor(function (f) {
-    return function (fa) {
-        return $foreign._fmap(f, fa);
-    };
-});
-var functorParAff = functorAff;
-var fromAVBox = Unsafe_Coerce.unsafeCoerce;
-var cancel = function (v) {
-    return v;
-};
-var launchAff = (function () {
-    var lowerEx = Data_Functor.map(Control_Monad_Eff.functorEff)(function ($54) {
-        return Canceler(Data_Functor.map(Data_Functor.functorFn)($foreign._unsafeInterleaveAff)(cancel($54)));
-    });
-    return function ($55) {
-        return lowerEx(runAff(Control_Monad_Eff_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Control_Monad_Eff.applicativeEff)(Data_Unit.unit)))($foreign._unsafeInterleaveAff($55)));
-    };
-})();
-var attempt = function (aff) {
-    return $foreign._attempt(Data_Either.Left.create, Data_Either.Right.create, aff);
-};
-var apathize = function (a) {
-    return Data_Functor.map(functorAff)(Data_Function["const"](Data_Unit.unit))(attempt(a));
-};
-var applyAff = new Control_Apply.Apply(function () {
-    return functorAff;
-}, function (ff) {
-    return function (fa) {
-        return $foreign._bind(alwaysCanceler, ff, function (f) {
-            return Data_Functor.map(functorAff)(f)(fa);
-        });
-    };
-});
-var applicativeAff = new Control_Applicative.Applicative(function () {
-    return applyAff;
-}, function (v) {
-    return $foreign._pure(nonCanceler, v);
-});
-var nonCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(false));
-var alwaysCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(true));
-var cancelWith = function (aff) {
-    return function (c) {
-        return $foreign._cancelWith(nonCanceler, aff, c);
-    };
-};
-var delay = function (v) {
-    return $foreign._delay(nonCanceler, v);
-};
-var forkAff = function (aff) {
-    return $foreign._forkAff(nonCanceler, aff);
-};
-var forkAll = function (dictFoldable) {
-    return function (affs) {
-        return $foreign._forkAll(nonCanceler, Data_Foldable.foldl(dictFoldable), affs);
-    };
-};
-var killVar = function (q) {
-    return function (e) {
-        return fromAVBox(Control_Monad_Aff_Internal._killVar(nonCanceler, q, e));
-    };
-};
-var liftEff$prime = function (eff) {
-    return attempt($foreign._unsafeInterleaveAff($foreign._liftEff(nonCanceler, eff)));
-};
-var makeAff = function (h) {
-    return makeAff$prime(function (e) {
-        return function (a) {
-            return Data_Functor.map(Control_Monad_Eff.functorEff)(Data_Function["const"](nonCanceler))(h(e)(a));
-        };
-    });
-};
-var makeVar = fromAVBox(Control_Monad_Aff_Internal._makeVar(nonCanceler));
-var putVar = function (q) {
-    return function (a) {
-        return fromAVBox(Control_Monad_Aff_Internal._putVar(nonCanceler, q, a));
-    };
-};
-var takeVar = function (q) {
-    return fromAVBox(Control_Monad_Aff_Internal._takeVar(nonCanceler, q));
-};
-var semigroupAff = function (dictSemigroup) {
-    return new Data_Semigroup.Semigroup(function (a) {
-        return function (b) {
-            return Control_Apply.apply(applyAff)(Data_Functor.map(functorAff)(Data_Semigroup.append(dictSemigroup))(a))(b);
-        };
-    });
-};
-var monoidAff = function (dictMonoid) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupAff(dictMonoid.Semigroup0());
-    }, Control_Applicative.pure(applicativeAff)(Data_Monoid.mempty(dictMonoid)));
-};
-var semigroupCanceler = new Data_Semigroup.Semigroup(function (v) {
-    return function (v1) {
-        return function (e) {
-            return Control_Apply.apply(applyAff)(Data_Functor.map(functorAff)(Data_HeytingAlgebra.disj(Data_HeytingAlgebra.heytingAlgebraBoolean))(v(e)))(v1(e));
-        };
-    };
-});
-var monoidCanceler = new Data_Monoid.Monoid(function () {
-    return semigroupCanceler;
-}, Data_Function["const"](Control_Applicative.pure(applicativeAff)(true)));
-var bindAff = new Control_Bind.Bind(function () {
-    return applyAff;
-}, function (fa) {
-    return function (f) {
-        return $foreign._bind(alwaysCanceler, fa, f);
-    };
-});
-var applyParAff = new Control_Apply.Apply(function () {
-    return functorParAff;
-}, function (v) {
-    return function (v1) {
-        var putOrKill = function (v2) {
-            return Data_Either.either(killVar(v2))(putVar(v2));
-        };
-        return Control_Bind.bind(bindAff)(makeVar)(function (v2) {
-            return Control_Bind.bind(bindAff)(makeVar)(function (v3) {
-                return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(putOrKill(v2))(attempt(v))))(function (v4) {
-                    return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(putOrKill(v3))(attempt(v1))))(function (v5) {
-                        return cancelWith(Control_Apply.apply(applyAff)(takeVar(v2))(takeVar(v3)))(Data_Semigroup.append(semigroupCanceler)(v4)(v5));
-                    });
-                });
-            });
-        });
-    };
-});
-var applicativeParAff = new Control_Applicative.Applicative(function () {
-    return applyParAff;
-}, function ($56) {
-    return ParAff(Control_Applicative.pure(applicativeAff)($56));
-});
-var semigroupParAff = function (dictSemigroup) {
-    return new Data_Semigroup.Semigroup(function (a) {
-        return function (b) {
-            return Control_Apply.apply(applyParAff)(Data_Functor.map(functorParAff)(Data_Semigroup.append(dictSemigroup))(a))(b);
-        };
-    });
-};
-var monoidParAff = function (dictMonoid) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupParAff(dictMonoid.Semigroup0());
-    }, Control_Applicative.pure(applicativeParAff)(Data_Monoid.mempty(dictMonoid)));
-};
-var monadAff = new Control_Monad.Monad(function () {
-    return applicativeAff;
-}, function () {
-    return bindAff;
-});
-var monadEffAff = new Control_Monad_Eff_Class.MonadEff(function () {
-    return monadAff;
-}, function (eff) {
-    return $foreign._liftEff(nonCanceler, eff);
-});
-var monadRecAff = new Control_Monad_Rec_Class.MonadRec(function () {
-    return monadAff;
-}, function (f) {
-    return function (a) {
-        var isLoop = function (v) {
-            if (v instanceof Control_Monad_Rec_Class.Loop) {
-                return true;
-            };
-            return false;
-        };
-        return $foreign._tailRecM(isLoop, f, a);
-    };
-});
-var monadThrowAff = new Control_Monad_Error_Class.MonadThrow(function () {
-    return monadAff;
-}, function (e) {
-    return $foreign._throwError(nonCanceler, e);
-});
-var $$finally = function (aff1) {
-    return function (aff2) {
-        return Control_Bind.bind(bindAff)(attempt(aff1))(function (v) {
-            return Control_Bind.bind(bindAff)(aff2)(function (v1) {
-                return Data_Either.either(Control_Monad_Error_Class.throwError(monadThrowAff))(Control_Applicative.pure(applicativeAff))(v);
-            });
-        });
-    };
-};
-var parallelParAff = new Control_Parallel_Class.Parallel(function () {
-    return applicativeParAff;
-}, function () {
-    return monadAff;
-}, ParAff, function (v) {
-    return v;
-});
-var monadErrorAff = new Control_Monad_Error_Class.MonadError(function () {
-    return monadThrowAff;
-}, function (aff) {
-    return function (ex) {
-        return Control_Bind.bind(bindAff)(attempt(aff))(Data_Either.either(ex)(Control_Applicative.pure(applicativeAff)));
-    };
-});
-var altParAff = new Control_Alt.Alt(function () {
-    return functorParAff;
-}, function (v) {
-    return function (v1) {
-        var maybeKill = function (va) {
-            return function (ve) {
-                return function (err) {
-                    return Control_Bind.bind(bindAff)(takeVar(ve))(function (v2) {
-                        return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(Control_Applicative.when(applicativeAff)(v2 === 1)(killVar(va)(err)))(function () {
-                            return putVar(ve)(v2 + 1 | 0);
-                        });
-                    });
-                };
-            };
-        };
-        var done = function (cs) {
-            return function (get) {
-                return function (va) {
-                    return function (x) {
-                        return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(putVar(va)(x))(function () {
-                            return Control_Bind.bind(bindAff)(Data_Functor.map(functorAff)(get)(takeVar(cs)))(function (v2) {
-                                return Data_Functor["void"](functorAff)(cancel(v2)(Control_Monad_Eff_Exception.error("Alt early exit")));
-                            });
-                        });
-                    };
-                };
-            };
-        };
-        return Control_Bind.bind(bindAff)(makeVar)(function (v2) {
-            return Control_Bind.bind(bindAff)(makeVar)(function (v3) {
-                return Control_Bind.bind(bindAff)(makeVar)(function (v4) {
-                    return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(putVar(v3)(0))(function () {
-                        return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(Data_Either.either(maybeKill(v2)(v3))(done(v4)(Data_Tuple.snd)(v2)))(attempt(v))))(function (v5) {
-                            return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(Data_Either.either(maybeKill(v2)(v3))(done(v4)(Data_Tuple.fst)(v2)))(attempt(v1))))(function (v6) {
-                                return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(putVar(v4)(new Data_Tuple.Tuple(v5, v6)))(function () {
-                                    return cancelWith(takeVar(v2))(Data_Semigroup.append(semigroupCanceler)(v5)(v6));
-                                });
-                            });
-                        });
-                    });
-                });
-            });
-        });
-    };
-});
-var altAff = new Control_Alt.Alt(function () {
-    return functorAff;
-}, function (a1) {
-    return function (a2) {
-        return Control_Bind.bind(bindAff)(attempt(a1))(Data_Either.either(Data_Function["const"](a2))(Control_Applicative.pure(applicativeAff)));
-    };
-});
-var plusAff = new Control_Plus.Plus(function () {
-    return altAff;
-}, Control_Monad_Error_Class.throwError(monadThrowAff)(Control_Monad_Eff_Exception.error("Always fails")));
-var alternativeAff = new Control_Alternative.Alternative(function () {
-    return applicativeAff;
-}, function () {
-    return plusAff;
-});
-var monadZero = new Control_MonadZero.MonadZero(function () {
-    return alternativeAff;
-}, function () {
-    return monadAff;
-});
-var monadPlusAff = new Control_MonadPlus.MonadPlus(function () {
-    return monadZero;
-});
-var plusParAff = new Control_Plus.Plus(function () {
-    return altParAff;
-}, Control_Plus.empty(plusAff));
-var alternativeParAff = new Control_Alternative.Alternative(function () {
-    return applicativeParAff;
-}, function () {
-    return plusParAff;
-});
-module.exports = {
-    Canceler: Canceler, 
-    ParAff: ParAff, 
-    apathize: apathize, 
-    attempt: attempt, 
-    cancel: cancel, 
-    cancelWith: cancelWith, 
-    delay: delay, 
-    "finally": $$finally, 
-    forkAff: forkAff, 
-    forkAll: forkAll, 
-    launchAff: launchAff, 
-    "liftEff'": liftEff$prime, 
-    makeAff: makeAff, 
-    "makeAff'": makeAff$prime, 
-    nonCanceler: nonCanceler, 
-    runAff: runAff, 
-    semigroupAff: semigroupAff, 
-    monoidAff: monoidAff, 
-    functorAff: functorAff, 
-    applyAff: applyAff, 
-    applicativeAff: applicativeAff, 
-    bindAff: bindAff, 
-    monadAff: monadAff, 
-    monadEffAff: monadEffAff, 
-    monadThrowAff: monadThrowAff, 
-    monadErrorAff: monadErrorAff, 
-    altAff: altAff, 
-    plusAff: plusAff, 
-    alternativeAff: alternativeAff, 
-    monadZero: monadZero, 
-    monadPlusAff: monadPlusAff, 
-    monadRecAff: monadRecAff, 
-    semigroupCanceler: semigroupCanceler, 
-    monoidCanceler: monoidCanceler, 
-    newtypeParAff: newtypeParAff, 
-    semigroupParAff: semigroupParAff, 
-    monoidParAff: monoidParAff, 
-    functorParAff: functorParAff, 
-    applyParAff: applyParAff, 
-    applicativeParAff: applicativeParAff, 
-    altParAff: altParAff, 
-    plusParAff: plusParAff, 
-    alternativeParAff: alternativeParAff, 
-    parallelParAff: parallelParAff
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":86,"../Control.Monad.Aff.Internal":53,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Class":58,"../Control.Monad.Eff.Exception":62,"../Control.Monad.Error.Class":71,"../Control.Monad.Rec.Class":77,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Parallel":90,"../Control.Parallel.Class":89,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Time.Duration":242,"../Data.Tuple":245,"../Data.Unit":249,"../Prelude":268,"../Unsafe.Coerce":271,"./foreign":54}],56:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Prelude = require("../Prelude");
-var MonadCont = function (Monad0, callCC) {
-    this.Monad0 = Monad0;
-    this.callCC = callCC;
-};
-var callCC = function (dict) {
-    return dict.callCC;
-};
-module.exports = {
-    MonadCont: MonadCont, 
-    callCC: callCC
-};
-
-},{"../Prelude":268}],57:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Prelude = require("../Prelude");
-var ContT = function (x) {
-    return x;
-};
-var withContT = function (f) {
-    return function (v) {
-        return function (k) {
-            return v(f(k));
-        };
-    };
-};
-var runContT = function (v) {
-    return function (k) {
-        return v(k);
-    };
-};
-var newtypeContT = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, ContT);
-var monadTransContT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-    return function (m) {
-        return function (k) {
-            return Control_Bind.bind(dictMonad.Bind1())(m)(k);
-        };
-    };
-});
-var mapContT = function (f) {
-    return function (v) {
-        return function (k) {
-            return f(v(k));
-        };
-    };
-};
-var functorContT = function (dictFunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return function (v) {
-            return function (k) {
-                return v(function (a) {
-                    return k(f(a));
-                });
-            };
-        };
-    });
-};
-var applyContT = function (dictApply) {
-    return new Control_Apply.Apply(function () {
-        return functorContT(dictApply.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return function (k) {
-                return v(function (g) {
-                    return v1(function (a) {
-                        return k(g(a));
-                    });
-                });
-            };
-        };
-    });
-};
-var bindContT = function (dictBind) {
-    return new Control_Bind.Bind(function () {
-        return applyContT(dictBind.Apply0());
-    }, function (v) {
-        return function (k) {
-            return function (k$prime) {
-                return v(function (a) {
-                    var v1 = k(a);
-                    return v1(k$prime);
-                });
-            };
-        };
-    });
-};
-var applicativeContT = function (dictApplicative) {
-    return new Control_Applicative.Applicative(function () {
-        return applyContT(dictApplicative.Apply0());
-    }, function (a) {
-        return function (k) {
-            return k(a);
-        };
-    });
-};
-var monadContT = function (dictMonad) {
-    return new Control_Monad.Monad(function () {
-        return applicativeContT(dictMonad.Applicative0());
-    }, function () {
-        return bindContT(dictMonad.Bind1());
-    });
-};
-var monadAskContT = function (dictMonadAsk) {
-    return new Control_Monad_Reader_Class.MonadAsk(function () {
-        return monadContT(dictMonadAsk.Monad0());
-    }, Control_Monad_Trans_Class.lift(monadTransContT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
-};
-var monadReaderContT = function (dictMonadReader) {
-    return new Control_Monad_Reader_Class.MonadReader(function () {
-        return monadAskContT(dictMonadReader.MonadAsk0());
-    }, function (f) {
-        return function (v) {
-            return function (k) {
-                return Control_Bind.bind(((dictMonadReader.MonadAsk0()).Monad0()).Bind1())(Control_Monad_Reader_Class.ask(dictMonadReader.MonadAsk0()))(function (v1) {
-                    return Control_Monad_Reader_Class.local(dictMonadReader)(f)(v(function ($45) {
-                        return Control_Monad_Reader_Class.local(dictMonadReader)(Data_Function["const"](v1))(k($45));
-                    }));
-                });
-            };
-        };
-    });
-};
-var monadContContT = function (dictMonad) {
-    return new Control_Monad_Cont_Class.MonadCont(function () {
-        return monadContT(dictMonad);
-    }, function (f) {
-        return function (k) {
-            var v = f(function (a) {
-                return function (v1) {
-                    return k(a);
-                };
-            });
-            return v(k);
-        };
-    });
-};
-var monadEffContT = function (dictMonadEff) {
-    return new Control_Monad_Eff_Class.MonadEff(function () {
-        return monadContT(dictMonadEff.Monad0());
-    }, function ($46) {
-        return Control_Monad_Trans_Class.lift(monadTransContT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($46));
-    });
-};
-var monadStateContT = function (dictMonadState) {
-    return new Control_Monad_State_Class.MonadState(function () {
-        return monadContT(dictMonadState.Monad0());
-    }, function ($47) {
-        return Control_Monad_Trans_Class.lift(monadTransContT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)($47));
-    });
-};
-module.exports = {
-    ContT: ContT, 
-    mapContT: mapContT, 
-    runContT: runContT, 
-    withContT: withContT, 
-    newtypeContT: newtypeContT, 
-    monadContContT: monadContContT, 
-    functorContT: functorContT, 
-    applyContT: applyContT, 
-    applicativeContT: applicativeContT, 
-    bindContT: bindContT, 
-    monadContT: monadContT, 
-    monadTransContT: monadTransContT, 
-    monadEffContT: monadEffContT, 
-    monadAskContT: monadAskContT, 
-    monadReaderContT: monadReaderContT, 
-    monadStateContT: monadStateContT
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":86,"../Control.Monad.Cont.Class":56,"../Control.Monad.Eff.Class":58,"../Control.Monad.Reader.Class":75,"../Control.Monad.State.Class":80,"../Control.Monad.Trans.Class":83,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Functor":155,"../Data.Newtype":209,"../Prelude":268}],58:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var MonadEff = function (Monad0, liftEff) {
-    this.Monad0 = Monad0;
-    this.liftEff = liftEff;
-};
-var monadEffEff = new MonadEff(function () {
-    return Control_Monad_Eff.monadEff;
-}, Control_Category.id(Control_Category.categoryFn));
-var liftEff = function (dict) {
-    return dict.liftEff;
-};
-module.exports = {
-    MonadEff: MonadEff, 
-    liftEff: liftEff, 
-    monadEffEff: monadEffEff
-};
-
-},{"../Control.Category":47,"../Control.Monad":86,"../Control.Monad.Eff":70}],59:[function(require,module,exports){
-"use strict";
-
-exports.log = function (s) {
-  return function () {
-    console.log(s);
-    return {};
-  };
-};
-
-exports.warn = function (s) {
-  return function () {
-    console.warn(s);
-    return {};
-  };
-};
-
-exports.error = function (s) {
-  return function () {
-    console.error(s);
-    return {};
-  };
-};
-
-exports.info = function (s) {
-  return function () {
-    console.info(s);
-    return {};
-  };
-};
-
-},{}],60:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Data_Show = require("../Data.Show");
-var Data_Unit = require("../Data.Unit");
-var warnShow = function (dictShow) {
-    return function (a) {
-        return $foreign.warn(Data_Show.show(dictShow)(a));
-    };
-};
-var logShow = function (dictShow) {
-    return function (a) {
-        return $foreign.log(Data_Show.show(dictShow)(a));
-    };
-};
-var infoShow = function (dictShow) {
-    return function (a) {
-        return $foreign.info(Data_Show.show(dictShow)(a));
-    };
-};
-var errorShow = function (dictShow) {
-    return function (a) {
-        return $foreign.error(Data_Show.show(dictShow)(a));
-    };
-};
-module.exports = {
-    errorShow: errorShow, 
-    infoShow: infoShow, 
-    logShow: logShow, 
-    warnShow: warnShow, 
-    error: $foreign.error, 
-    info: $foreign.info, 
-    log: $foreign.log, 
-    warn: $foreign.warn
-};
-
-},{"../Control.Monad.Eff":70,"../Data.Show":233,"../Data.Unit":249,"./foreign":59}],61:[function(require,module,exports){
-"use strict";
-
-exports.showErrorImpl = function (err) {
-  return err.stack || err.toString();
-};
-
-exports.error = function (msg) {
-  return new Error(msg);
-};
-
-exports.message = function (e) {
-  return e.message;
-};
-
-exports.stackImpl = function (just) {
-  return function (nothing) {
-    return function (e) {
-      return e.stack ? just(e.stack) : nothing;
-    };
-  };
-};
-
-exports.throwException = function (e) {
-  return function () {
-    throw e;
-  };
-};
-
-exports.catchException = function (c) {
-  return function (t) {
-    return function () {
-      try {
-        return t();
-      } catch (e) {
-        if (e instanceof Error || Object.prototype.toString.call(e) === "[object Error]") {
-          return c(e)();
-        } else {
-          return c(new Error(e.toString()))();
-        }
-      }
-    };
-  };
-};
-
-},{}],62:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Functor = require("../Data.Functor");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var $$try = function (action) {
-    return $foreign.catchException(function ($0) {
-        return Control_Applicative.pure(Control_Monad_Eff.applicativeEff)(Data_Either.Left.create($0));
-    })(Data_Functor.map(Control_Monad_Eff.functorEff)(Data_Either.Right.create)(action));
-};
-var $$throw = function ($1) {
-    return $foreign.throwException($foreign.error($1));
-};
-var stack = $foreign.stackImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var showError = new Data_Show.Show($foreign.showErrorImpl);
-module.exports = {
-    stack: stack, 
-    "throw": $$throw, 
-    "try": $$try, 
-    showError: showError, 
-    catchException: $foreign.catchException, 
-    error: $foreign.error, 
-    message: $foreign.message, 
-    throwException: $foreign.throwException
-};
-
-},{"../Control.Applicative":40,"../Control.Monad.Eff":70,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Functor":155,"../Data.Maybe":198,"../Data.Show":233,"../Prelude":268,"./foreign":61}],63:[function(require,module,exports){
-/* global exports */
-"use strict";
-
-exports.ready = function(func) {
-    return function() {
-        jQuery(document).ready(func);
-    };
-};
-
-exports.select = function(selector) {
-    return function() {
-        return jQuery(selector);
-    };
-};
-
-exports.find = function(selector) {
-    return function(ob) {
-        return function() {
-            return ob.find(selector);
-        };
-    };
-};
-
-exports.parent = function(ob) {
-    return function() {
-        return ob.parent();
-    };
-};
-
-exports.closest = function(selector) {
-    return function(ob) {
-        return function() {
-            return ob.closest(selector);
-        };
-    };
-};
-
-exports.create = function(html) {
-    return function() {
-        return jQuery(html);
-    };
-};
-
-exports.setAttr = function(attr) {
-    return function(val) {
-        return function(ob) {
-            return function() {
-                ob.attr(attr, val);
-            };
-        };
-    };
-};
-
-exports.attr = function(attrs) {
-    return function(ob) {
-        return function() {
-            ob.attr(attrs);
-        };
-    };
-};
-
-exports.css = function(props) {
-    return function(ob) {
-        return function() {
-            ob.css(props);
-        };
-    };
-};
-
-exports.hasClass = function(cls) {
-    return function(ob) {
-        return function() {
-            return ob.hasClass(cls);
-        };
-    };
-};
-
-exports.toggleClass = function(cls) {
-    return function(ob) {
-        return function() {
-            ob.toggleClass(cls);
-        };
-    };
-};
-
-exports.setClass = function(cls) {
-    return function(flag) {
-        return function(ob) {
-            return function() {
-                ob.toggleClass(cls, flag);
-            };
-        };
-    };
-};
-
-exports.setProp = function(p) {
-    return function(val) {
-        return function(ob) {
-            return function() {
-                ob.prop(p, val);
-            };
-        };
-    };
-};
-
-exports.getProp = function(p) {
-    return function(ob) {
-        return function() {
-            return ob.prop(p);
-        };
-    };
-};
-
-exports.append = function(ob1) {
-    return function(ob) {
-        return function() {
-            ob.append(ob1);
-        };
-    };
-};
-
-exports.appendText = function(s) {
-    return function(ob) {
-        return function() {
-            ob.append(s);
-        };
-    };
-};
-
-exports.body = function() {
-    return jQuery(document.body);
-};
-
-exports.remove = function(ob) {
-    return function() {
-        ob.remove();
-    };
-};
-
-exports.clear = function(ob) {
-    return function() {
-        ob.empty();
-    };
-};
-
-exports.before = function(ob) {
-    return function(ob1) {
-        return function() {
-            ob1.before(ob);
-        };
-    };
-};
-
-exports.getText = function(ob) {
-    return function() {
-        return ob.text();
-    };
-};
-
-exports.setText = function(text) {
-    return function(ob) {
-        return function() {
-            ob.text(text);
-        };
-    };
-};
-
-exports.getHtml = function(ob) {
-    return function() {
-        return ob.html();
-    };
-};
-
-exports.setHtml = function(html) {
-    return function(ob) {
-        return function() {
-            ob.html(html);
-        };
-    };
-};
-
-exports.getValue = function(ob) {
-    return function() {
-        return ob.val();
-    };
-};
-
-exports.setValue = function(val) {
-    return function(ob) {
-        return function() {
-            ob.val(val);
-        };
-    };
-};
-
-exports.toggle = function(ob) {
-    return function() {
-        ob.toggle();
-    };
-};
-
-exports.setVisible = function(flag) {
-    return function(ob) {
-        return function() {
-            ob.toggle(flag);
-        };
-    };
-};
-
-exports.toArray = function(ob) {
-    return function() {
-        var els = ob.toArray();
-        var copy = [];
-        for (var i = 0; i < els.length; i++) {
-            copy.push(jQuery(els[i]));
-        }
-        return copy;
-    };
-};
-
-exports.on = function(evt) {
-    return function(act) {
-        return function(ob) {
-            return function() {
-                ob.on(evt, function(e) {
-                    act(e)(jQuery(this))();
-                });
-            };
-        };
-    };
-};
-
-exports["on'"] = function(evt) {
-    return function(sel) {
-        return function(act) {
-            return function(ob) {
-                return function() {
-                    ob.on(evt, sel, function(e) {
-                        act(e)(jQuery(this))();
-                    });
-                };
-            };
-        };
-    };
-};
-
-exports.preventDefault = function(e) {
-    return function() {
-        e.preventDefault();
-    };
-};
-
-exports.stopPropagation = function(e) {
-    return function() {
-        e.stopPropagation();
-    };
-};
-
-exports.stopImmediatePropagation = function(e) {
-    return function() {
-        e.stopImmediatePropagation();
-    };
-};
-
-exports.getTarget = function(e) {
-    return function() {
-        return jQuery(e.target);
-    };
-};
-
-exports.getCurrentTarget = function(e) {
-    return function() {
-        return jQuery(e.currentTarget);
-    };
-};
-
-exports.getPageX = function(e) {
-    return function() {
-        return jQuery(e.pageX);
-    };
-};
-
-exports.getPageY = function(e) {
-    return function() {
-        return jQuery(e.pageY);
-    };
-};
-
-exports.getWhich = function(e) {
-    return function() {
-        return jQuery(e.which);
-    };
-};
-
-exports.getMetaKey = function(e) {
-    return function() {
-        return jQuery(e.metaKey);
-    };
-};
-
-
-exports.clone = function(ob) {
-    return function() {
-        return ob.clone();
-    };
-};
-
-exports.cloneWithDataAndEvents = function(ob) {
-    return function() {
-        return ob.clone(true);
-    };
-};
-
-},{}],64:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var DOM = require("../DOM");
-var Data_Foreign = require("../Data.Foreign");
-var Prelude = require("../Prelude");
-var removeClass = function (cls) {
-    return $foreign.setClass(cls)(false);
-};
-var hide = $foreign.setVisible(false);
-var display = $foreign.setVisible(true);
-var addClass = function (cls) {
-    return $foreign.setClass(cls)(true);
-};
-module.exports = {
-    addClass: addClass, 
-    display: display, 
-    hide: hide, 
-    removeClass: removeClass, 
-    append: $foreign.append, 
-    appendText: $foreign.appendText, 
-    attr: $foreign.attr, 
-    before: $foreign.before, 
-    body: $foreign.body, 
-    clear: $foreign.clear, 
-    clone: $foreign.clone, 
-    cloneWithDataAndEvents: $foreign.cloneWithDataAndEvents, 
-    closest: $foreign.closest, 
-    create: $foreign.create, 
-    css: $foreign.css, 
-    find: $foreign.find, 
-    getCurrentTarget: $foreign.getCurrentTarget, 
-    getHtml: $foreign.getHtml, 
-    getMetaKey: $foreign.getMetaKey, 
-    getPageX: $foreign.getPageX, 
-    getPageY: $foreign.getPageY, 
-    getProp: $foreign.getProp, 
-    getTarget: $foreign.getTarget, 
-    getText: $foreign.getText, 
-    getValue: $foreign.getValue, 
-    getWhich: $foreign.getWhich, 
-    hasClass: $foreign.hasClass, 
-    on: $foreign.on, 
-    "on'": $foreign["on'"], 
-    parent: $foreign.parent, 
-    preventDefault: $foreign.preventDefault, 
-    ready: $foreign.ready, 
-    remove: $foreign.remove, 
-    select: $foreign.select, 
-    setAttr: $foreign.setAttr, 
-    setClass: $foreign.setClass, 
-    setHtml: $foreign.setHtml, 
-    setProp: $foreign.setProp, 
-    setText: $foreign.setText, 
-    setValue: $foreign.setValue, 
-    setVisible: $foreign.setVisible, 
-    stopImmediatePropagation: $foreign.stopImmediatePropagation, 
-    stopPropagation: $foreign.stopPropagation, 
-    toArray: $foreign.toArray, 
-    toggle: $foreign.toggle, 
-    toggleClass: $foreign.toggleClass
-};
-
-},{"../Control.Monad.Eff":70,"../DOM":100,"../Data.Foreign":145,"../Prelude":268,"./foreign":63}],65:[function(require,module,exports){
-"use strict";
-
-exports.newRef = function (val) {
-  return function () {
-    return { value: val };
-  };
-};
-
-exports.readRef = function (ref) {
-  return function () {
-    return ref.value;
-  };
-};
-
-exports["modifyRef'"] = function (ref) {
-  return function (f) {
-    return function () {
-      var t = f(ref.value);
-      ref.value = t.state;
-      return t.value;
-    };
-  };
-};
-
-exports.writeRef = function (ref) {
-  return function (val) {
-    return function () {
-      ref.value = val;
-      return {};
-    };
-  };
-};
-
-},{}],66:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var modifyRef = function (ref) {
-    return function (f) {
-        return $foreign["modifyRef'"](ref)(function (s) {
-            return {
-                state: f(s), 
-                value: Data_Unit.unit
-            };
-        });
-    };
-};
-module.exports = {
-    modifyRef: modifyRef, 
-    "modifyRef'": $foreign["modifyRef'"], 
-    newRef: $foreign.newRef, 
-    readRef: $foreign.readRef, 
-    writeRef: $foreign.writeRef
-};
-
-},{"../Control.Monad.Eff":70,"../Data.Unit":249,"../Prelude":268,"./foreign":65}],67:[function(require,module,exports){
-"use strict";
-
-exports.unsafeCoerceEff = function (f) {
-  return f;
-};
-
-},{}],68:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var unsafePerformEff = function ($0) {
-    return Control_Monad_Eff.runPure($foreign.unsafeCoerceEff($0));
-};
-module.exports = {
-    unsafePerformEff: unsafePerformEff, 
-    unsafeCoerceEff: $foreign.unsafeCoerceEff
-};
-
-},{"../Control.Monad.Eff":70,"../Control.Semigroupoid":92,"./foreign":67}],69:[function(require,module,exports){
-"use strict";
-
-exports.pureE = function (a) {
-  return function () {
-    return a;
-  };
-};
-
-exports.bindE = function (a) {
-  return function (f) {
-    return function () {
-      return f(a())();
-    };
-  };
-};
-
-exports.runPure = function (f) {
-  return f();
-};
-
-exports.untilE = function (f) {
-  return function () {
-    while (!f());
-    return {};
-  };
-};
-
-exports.whileE = function (f) {
-  return function (a) {
-    return function () {
-      while (f()) {
-        a();
-      }
-      return {};
-    };
-  };
-};
-
-exports.forE = function (lo) {
-  return function (hi) {
-    return function (f) {
-      return function () {
-        for (var i = lo; i < hi; i++) {
-          f(i)();
-        }
-      };
-    };
-  };
-};
-
-exports.foreachE = function (as) {
-  return function (f) {
-    return function () {
-      for (var i = 0, l = as.length; i < l; i++) {
-        f(as[i])();
-      }
-    };
-  };
-};
-
-},{}],70:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad = require("../Control.Monad");
-var Data_Functor = require("../Data.Functor");
-var Data_Unit = require("../Data.Unit");
-var monadEff = new Control_Monad.Monad(function () {
-    return applicativeEff;
-}, function () {
-    return bindEff;
-});
-var bindEff = new Control_Bind.Bind(function () {
-    return applyEff;
-}, $foreign.bindE);
-var applyEff = new Control_Apply.Apply(function () {
-    return functorEff;
-}, Control_Monad.ap(monadEff));
-var applicativeEff = new Control_Applicative.Applicative(function () {
-    return applyEff;
-}, $foreign.pureE);
-var functorEff = new Data_Functor.Functor(Control_Applicative.liftA1(applicativeEff));
-module.exports = {
-    functorEff: functorEff, 
-    applyEff: applyEff, 
-    applicativeEff: applicativeEff, 
-    bindEff: bindEff, 
-    monadEff: monadEff, 
-    forE: $foreign.forE, 
-    foreachE: $foreign.foreachE, 
-    runPure: $foreign.runPure, 
-    untilE: $foreign.untilE, 
-    whileE: $foreign.whileE
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":86,"../Data.Functor":155,"../Data.Unit":249,"./foreign":69}],71:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var MonadThrow = function (Monad0, throwError) {
-    this.Monad0 = Monad0;
-    this.throwError = throwError;
-};
-var MonadError = function (MonadThrow0, catchError) {
-    this.MonadThrow0 = MonadThrow0;
-    this.catchError = catchError;
-};
-var throwError = function (dict) {
-    return dict.throwError;
-};
-var monadThrowMaybe = new MonadThrow(function () {
-    return Data_Maybe.monadMaybe;
-}, Data_Function["const"](Data_Maybe.Nothing.value));
-var monadThrowEither = new MonadThrow(function () {
-    return Data_Either.monadEither;
-}, Data_Either.Left.create);
-var monadErrorMaybe = new MonadError(function () {
-    return monadThrowMaybe;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Data_Maybe.Nothing) {
-            return v1(Data_Unit.unit);
-        };
-        if (v instanceof Data_Maybe.Just) {
-            return new Data_Maybe.Just(v.value0);
-        };
-        throw new Error("Failed pattern match at Control.Monad.Error.Class line 77, column 3 - line 77, column 33: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var monadErrorEither = new MonadError(function () {
-    return monadThrowEither;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Data_Either.Left) {
-            return v1(v.value0);
-        };
-        if (v instanceof Data_Either.Right) {
-            return new Data_Either.Right(v.value0);
-        };
-        throw new Error("Failed pattern match at Control.Monad.Error.Class line 70, column 3 - line 70, column 30: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var catchError = function (dict) {
-    return dict.catchError;
-};
-var catchJust = function (dictMonadError) {
-    return function (p) {
-        return function (act) {
-            return function (handler) {
-                var handle = function (e) {
-                    var v = p(e);
-                    if (v instanceof Data_Maybe.Nothing) {
-                        return throwError(dictMonadError.MonadThrow0())(e);
-                    };
-                    if (v instanceof Data_Maybe.Just) {
-                        return handler(v.value0);
-                    };
-                    throw new Error("Failed pattern match at Control.Monad.Error.Class line 54, column 5 - line 56, column 26: " + [ v.constructor.name ]);
-                };
-                return catchError(dictMonadError)(act)(handle);
-            };
-        };
-    };
-};
-var $$try = function (dictMonadError) {
-    return function (a) {
-        return catchError(dictMonadError)(Data_Functor.map(((((dictMonadError.MonadThrow0()).Monad0()).Bind1()).Apply0()).Functor0())(Data_Either.Right.create)(a))(function ($21) {
-            return Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0())(Data_Either.Left.create($21));
-        });
-    };
-};
-var withResource = function (dictMonadError) {
-    return function (acquire) {
-        return function (release) {
-            return function (kleisli) {
-                return Control_Bind.bind(((dictMonadError.MonadThrow0()).Monad0()).Bind1())(acquire)(function (v) {
-                    return Control_Bind.bind(((dictMonadError.MonadThrow0()).Monad0()).Bind1())($$try(dictMonadError)(kleisli(v)))(function (v1) {
-                        return Control_Bind.discard(Control_Bind.discardUnit)(((dictMonadError.MonadThrow0()).Monad0()).Bind1())(release(v))(function () {
-                            return Data_Either.either(throwError(dictMonadError.MonadThrow0()))(Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0()))(v1);
-                        });
-                    });
-                });
-            };
-        };
-    };
-};
-module.exports = {
-    MonadError: MonadError, 
-    MonadThrow: MonadThrow, 
-    catchError: catchError, 
-    catchJust: catchJust, 
-    throwError: throwError, 
-    "try": $$try, 
-    withResource: withResource, 
-    monadThrowEither: monadThrowEither, 
-    monadErrorEither: monadErrorEither, 
-    monadThrowMaybe: monadThrowMaybe, 
-    monadErrorMaybe: monadErrorMaybe
-};
-
-},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Maybe":198,"../Data.Unit":249,"../Prelude":268}],72:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
-var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var ExceptT = function (x) {
-    return x;
-};
-var withExceptT = function (dictFunctor) {
-    return function (f) {
-        return function (v) {
-            var mapLeft = function (v1) {
-                return function (v2) {
-                    if (v2 instanceof Data_Either.Right) {
-                        return new Data_Either.Right(v2.value0);
-                    };
-                    if (v2 instanceof Data_Either.Left) {
-                        return new Data_Either.Left(v1(v2.value0));
-                    };
-                    throw new Error("Failed pattern match at Control.Monad.Except.Trans line 44, column 3 - line 44, column 32: " + [ v1.constructor.name, v2.constructor.name ]);
-                };
-            };
-            return ExceptT(Data_Functor.map(dictFunctor)(mapLeft(f))(v));
-        };
-    };
-};
-var runExceptT = function (v) {
-    return v;
-};
-var newtypeExceptT = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, ExceptT);
-var monadTransExceptT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-    return function (m) {
-        return Control_Bind.bind(dictMonad.Bind1())(m)(function (v) {
-            return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(v));
-        });
-    };
-});
-var mapExceptT = function (f) {
-    return function (v) {
-        return f(v);
-    };
-};
-var functorExceptT = function (dictFunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return mapExceptT(Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Either.functorEither)(f)));
-    });
-};
-var except = function (dictApplicative) {
-    return function ($96) {
-        return ExceptT(Control_Applicative.pure(dictApplicative)($96));
-    };
-};
-var monadExceptT = function (dictMonad) {
-    return new Control_Monad.Monad(function () {
-        return applicativeExceptT(dictMonad);
-    }, function () {
-        return bindExceptT(dictMonad);
-    });
-};
-var bindExceptT = function (dictMonad) {
-    return new Control_Bind.Bind(function () {
-        return applyExceptT(dictMonad);
-    }, function (v) {
-        return function (k) {
-            return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either(function ($97) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($97));
-            })(function (a) {
-                var v1 = k(a);
-                return v1;
-            }));
-        };
-    });
-};
-var applyExceptT = function (dictMonad) {
-    return new Control_Apply.Apply(function () {
-        return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());
-    }, Control_Monad.ap(monadExceptT(dictMonad)));
-};
-var applicativeExceptT = function (dictMonad) {
-    return new Control_Applicative.Applicative(function () {
-        return applyExceptT(dictMonad);
-    }, function ($98) {
-        return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Right.create($98)));
-    });
-};
-var monadAskExceptT = function (dictMonadAsk) {
-    return new Control_Monad_Reader_Class.MonadAsk(function () {
-        return monadExceptT(dictMonadAsk.Monad0());
-    }, Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
-};
-var monadReaderExceptT = function (dictMonadReader) {
-    return new Control_Monad_Reader_Class.MonadReader(function () {
-        return monadAskExceptT(dictMonadReader.MonadAsk0());
-    }, function (f) {
-        return mapExceptT(Control_Monad_Reader_Class.local(dictMonadReader)(f));
-    });
-};
-var monadContExceptT = function (dictMonadCont) {
-    return new Control_Monad_Cont_Class.MonadCont(function () {
-        return monadExceptT(dictMonadCont.Monad0());
-    }, function (f) {
-        return ExceptT(Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
-            var v = f(function (a) {
-                return ExceptT(c(new Data_Either.Right(a)));
-            });
-            return v;
-        }));
-    });
-};
-var monadEffExceptT = function (dictMonadEff) {
-    return new Control_Monad_Eff_Class.MonadEff(function () {
-        return monadExceptT(dictMonadEff.Monad0());
-    }, function ($99) {
-        return Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($99));
-    });
-};
-var monadRecExceptT = function (dictMonadRec) {
-    return new Control_Monad_Rec_Class.MonadRec(function () {
-        return monadExceptT(dictMonadRec.Monad0());
-    }, function (f) {
-        return function ($100) {
-            return ExceptT(Control_Monad_Rec_Class.tailRecM(dictMonadRec)(function (a) {
-                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
-                    var v = f(a);
-                    return v;
-                })())(function (m$prime) {
-                    return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
-                        if (m$prime instanceof Data_Either.Left) {
-                            return new Control_Monad_Rec_Class.Done(new Data_Either.Left(m$prime.value0));
-                        };
-                        if (m$prime instanceof Data_Either.Right && m$prime.value0 instanceof Control_Monad_Rec_Class.Loop) {
-                            return new Control_Monad_Rec_Class.Loop(m$prime.value0.value0);
-                        };
-                        if (m$prime instanceof Data_Either.Right && m$prime.value0 instanceof Control_Monad_Rec_Class.Done) {
-                            return new Control_Monad_Rec_Class.Done(new Data_Either.Right(m$prime.value0.value0));
-                        };
-                        throw new Error("Failed pattern match at Control.Monad.Except.Trans line 76, column 14 - line 79, column 43: " + [ m$prime.constructor.name ]);
-                    })());
-                });
-            })($100));
-        };
-    });
-};
-var monadStateExceptT = function (dictMonadState) {
-    return new Control_Monad_State_Class.MonadState(function () {
-        return monadExceptT(dictMonadState.Monad0());
-    }, function (f) {
-        return Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)(f));
-    });
-};
-var monadTellExceptT = function (dictMonadTell) {
-    return new Control_Monad_Writer_Class.MonadTell(function () {
-        return monadExceptT(dictMonadTell.Monad0());
-    }, function ($101) {
-        return Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($101));
-    });
-};
-var monadWriterExceptT = function (dictMonadWriter) {
-    return new Control_Monad_Writer_Class.MonadWriter(function () {
-        return monadTellExceptT(dictMonadWriter.MonadTell0());
-    }, mapExceptT(function (m) {
-        return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(Control_Monad_Writer_Class.listen(dictMonadWriter)(m))(function (v) {
-            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(Data_Functor.map(Data_Either.functorEither)(function (r) {
-                return new Data_Tuple.Tuple(r, v.value1);
-            })(v.value0));
-        });
-    }), mapExceptT(function (m) {
-        return Control_Monad_Writer_Class.pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m)(function (v) {
-            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())((function () {
-                if (v instanceof Data_Either.Left) {
-                    return new Data_Tuple.Tuple(new Data_Either.Left(v.value0), Control_Category.id(Control_Category.categoryFn));
-                };
-                if (v instanceof Data_Either.Right) {
-                    return new Data_Tuple.Tuple(new Data_Either.Right(v.value0.value0), v.value0.value1);
-                };
-                throw new Error("Failed pattern match at Control.Monad.Except.Trans line 138, column 10 - line 140, column 44: " + [ v.constructor.name ]);
-            })());
-        }));
-    }));
-};
-var monadThrowExceptT = function (dictMonad) {
-    return new Control_Monad_Error_Class.MonadThrow(function () {
-        return monadExceptT(dictMonad);
-    }, function ($102) {
-        return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($102)));
-    });
-};
-var monadErrorExceptT = function (dictMonad) {
-    return new Control_Monad_Error_Class.MonadError(function () {
-        return monadThrowExceptT(dictMonad);
-    }, function (v) {
-        return function (k) {
-            return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either(function (a) {
-                var v1 = k(a);
-                return v1;
-            })(function ($103) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Right.create($103));
-            }));
-        };
-    });
-};
-var altExceptT = function (dictSemigroup) {
-    return function (dictMonad) {
-        return new Control_Alt.Alt(function () {
-            return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());
-        }, function (v) {
-            return function (v1) {
-                return Control_Bind.bind(dictMonad.Bind1())(v)(function (v2) {
-                    if (v2 instanceof Data_Either.Right) {
-                        return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(v2.value0));
-                    };
-                    if (v2 instanceof Data_Either.Left) {
-                        return Control_Bind.bind(dictMonad.Bind1())(v1)(function (v3) {
-                            if (v3 instanceof Data_Either.Right) {
-                                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(v3.value0));
-                            };
-                            if (v3 instanceof Data_Either.Left) {
-                                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Left(Data_Semigroup.append(dictSemigroup)(v2.value0)(v3.value0)));
-                            };
-                            throw new Error("Failed pattern match at Control.Monad.Except.Trans line 88, column 9 - line 90, column 49: " + [ v3.constructor.name ]);
-                        });
-                    };
-                    throw new Error("Failed pattern match at Control.Monad.Except.Trans line 84, column 5 - line 90, column 49: " + [ v2.constructor.name ]);
-                });
-            };
-        });
-    };
-};
-var plusExceptT = function (dictMonoid) {
-    return function (dictMonad) {
-        return new Control_Plus.Plus(function () {
-            return altExceptT(dictMonoid.Semigroup0())(dictMonad);
-        }, Control_Monad_Error_Class.throwError(monadThrowExceptT(dictMonad))(Data_Monoid.mempty(dictMonoid)));
-    };
-};
-var alternativeExceptT = function (dictMonoid) {
-    return function (dictMonad) {
-        return new Control_Alternative.Alternative(function () {
-            return applicativeExceptT(dictMonad);
-        }, function () {
-            return plusExceptT(dictMonoid)(dictMonad);
-        });
-    };
-};
-var monadZeroExceptT = function (dictMonoid) {
-    return function (dictMonad) {
-        return new Control_MonadZero.MonadZero(function () {
-            return alternativeExceptT(dictMonoid)(dictMonad);
-        }, function () {
-            return monadExceptT(dictMonad);
-        });
-    };
-};
-var monadPlusExceptT = function (dictMonoid) {
-    return function (dictMonad) {
-        return new Control_MonadPlus.MonadPlus(function () {
-            return monadZeroExceptT(dictMonoid)(dictMonad);
-        });
-    };
-};
-module.exports = {
-    ExceptT: ExceptT, 
-    except: except, 
-    mapExceptT: mapExceptT, 
-    runExceptT: runExceptT, 
-    withExceptT: withExceptT, 
-    newtypeExceptT: newtypeExceptT, 
-    functorExceptT: functorExceptT, 
-    applyExceptT: applyExceptT, 
-    applicativeExceptT: applicativeExceptT, 
-    bindExceptT: bindExceptT, 
-    monadExceptT: monadExceptT, 
-    monadRecExceptT: monadRecExceptT, 
-    altExceptT: altExceptT, 
-    plusExceptT: plusExceptT, 
-    alternativeExceptT: alternativeExceptT, 
-    monadPlusExceptT: monadPlusExceptT, 
-    monadZeroExceptT: monadZeroExceptT, 
-    monadTransExceptT: monadTransExceptT, 
-    monadEffExceptT: monadEffExceptT, 
-    monadContExceptT: monadContExceptT, 
-    monadThrowExceptT: monadThrowExceptT, 
-    monadErrorExceptT: monadErrorExceptT, 
-    monadAskExceptT: monadAskExceptT, 
-    monadReaderExceptT: monadReaderExceptT, 
-    monadStateExceptT: monadStateExceptT, 
-    monadTellExceptT: monadTellExceptT, 
-    monadWriterExceptT: monadWriterExceptT
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":86,"../Control.Monad.Cont.Class":56,"../Control.Monad.Eff.Class":58,"../Control.Monad.Error.Class":71,"../Control.Monad.Reader.Class":75,"../Control.Monad.Rec.Class":77,"../Control.Monad.State.Class":80,"../Control.Monad.Trans.Class":83,"../Control.Monad.Writer.Class":84,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Semigroup":229,"../Data.Tuple":245,"../Prelude":268}],73:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Identity = require("../Data.Identity");
-var Data_Newtype = require("../Data.Newtype");
-var Prelude = require("../Prelude");
-var withExcept = Control_Monad_Except_Trans.withExceptT(Data_Identity.functorIdentity);
-var runExcept = function ($0) {
-    return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(Control_Monad_Except_Trans.runExceptT($0));
-};
-var mapExcept = function (f) {
-    return Control_Monad_Except_Trans.mapExceptT(function ($1) {
-        return Data_Identity.Identity(f(Data_Newtype.unwrap(Data_Identity.newtypeIdentity)($1)));
-    });
-};
-module.exports = {
-    mapExcept: mapExcept, 
-    runExcept: runExcept, 
-    withExcept: withExcept
-};
-
-},{"../Control.Monad.Error.Class":71,"../Control.Monad.Except.Trans":72,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Identity":161,"../Data.Newtype":209,"../Prelude":268}],74:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
-var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var MaybeT = function (x) {
-    return x;
-};
-var runMaybeT = function (v) {
-    return v;
-};
-var newtypeMaybeT = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, MaybeT);
-var monadTransMaybeT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-    return function ($75) {
-        return MaybeT(Control_Monad.liftM1(dictMonad)(Data_Maybe.Just.create)($75));
-    };
-});
-var mapMaybeT = function (f) {
-    return function (v) {
-        return f(v);
-    };
-};
-var functorMaybeT = function (dictFunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return function (v) {
-            return Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v);
-        };
-    });
-};
-var monadMaybeT = function (dictMonad) {
-    return new Control_Monad.Monad(function () {
-        return applicativeMaybeT(dictMonad);
-    }, function () {
-        return bindMaybeT(dictMonad);
-    });
-};
-var bindMaybeT = function (dictMonad) {
-    return new Control_Bind.Bind(function () {
-        return applyMaybeT(dictMonad);
-    }, function (v) {
-        return function (f) {
-            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v1) {
-                if (v1 instanceof Data_Maybe.Nothing) {
-                    return Control_Applicative.pure(dictMonad.Applicative0())(Data_Maybe.Nothing.value);
-                };
-                if (v1 instanceof Data_Maybe.Just) {
-                    var v2 = f(v1.value0);
-                    return v2;
-                };
-                throw new Error("Failed pattern match at Control.Monad.Maybe.Trans line 55, column 11 - line 57, column 42: " + [ v1.constructor.name ]);
-            });
-        };
-    });
-};
-var applyMaybeT = function (dictMonad) {
-    return new Control_Apply.Apply(function () {
-        return functorMaybeT(((dictMonad.Bind1()).Apply0()).Functor0());
-    }, Control_Monad.ap(monadMaybeT(dictMonad)));
-};
-var applicativeMaybeT = function (dictMonad) {
-    return new Control_Applicative.Applicative(function () {
-        return applyMaybeT(dictMonad);
-    }, function ($76) {
-        return MaybeT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Maybe.Just.create($76)));
-    });
-};
-var monadAskMaybeT = function (dictMonadAsk) {
-    return new Control_Monad_Reader_Class.MonadAsk(function () {
-        return monadMaybeT(dictMonadAsk.Monad0());
-    }, Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
-};
-var monadReaderMaybeT = function (dictMonadReader) {
-    return new Control_Monad_Reader_Class.MonadReader(function () {
-        return monadAskMaybeT(dictMonadReader.MonadAsk0());
-    }, function (f) {
-        return mapMaybeT(Control_Monad_Reader_Class.local(dictMonadReader)(f));
-    });
-};
-var monadContMaybeT = function (dictMonadCont) {
-    return new Control_Monad_Cont_Class.MonadCont(function () {
-        return monadMaybeT(dictMonadCont.Monad0());
-    }, function (f) {
-        return MaybeT(Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
-            var v = f(function (a) {
-                return MaybeT(c(new Data_Maybe.Just(a)));
-            });
-            return v;
-        }));
-    });
-};
-var monadEffMaybe = function (dictMonadEff) {
-    return new Control_Monad_Eff_Class.MonadEff(function () {
-        return monadMaybeT(dictMonadEff.Monad0());
-    }, function ($77) {
-        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($77));
-    });
-};
-var monadRecMaybeT = function (dictMonadRec) {
-    return new Control_Monad_Rec_Class.MonadRec(function () {
-        return monadMaybeT(dictMonadRec.Monad0());
-    }, function (f) {
-        return function ($78) {
-            return MaybeT(Control_Monad_Rec_Class.tailRecM(dictMonadRec)(function (a) {
-                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
-                    var v = f(a);
-                    return v;
-                })())(function (m$prime) {
-                    return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
-                        if (m$prime instanceof Data_Maybe.Nothing) {
-                            return new Control_Monad_Rec_Class.Done(Data_Maybe.Nothing.value);
-                        };
-                        if (m$prime instanceof Data_Maybe.Just && m$prime.value0 instanceof Control_Monad_Rec_Class.Loop) {
-                            return new Control_Monad_Rec_Class.Loop(m$prime.value0.value0);
-                        };
-                        if (m$prime instanceof Data_Maybe.Just && m$prime.value0 instanceof Control_Monad_Rec_Class.Done) {
-                            return new Control_Monad_Rec_Class.Done(new Data_Maybe.Just(m$prime.value0.value0));
-                        };
-                        throw new Error("Failed pattern match at Control.Monad.Maybe.Trans line 85, column 16 - line 88, column 43: " + [ m$prime.constructor.name ]);
-                    })());
-                });
-            })($78));
-        };
-    });
-};
-var monadStateMaybeT = function (dictMonadState) {
-    return new Control_Monad_State_Class.MonadState(function () {
-        return monadMaybeT(dictMonadState.Monad0());
-    }, function (f) {
-        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)(f));
-    });
-};
-var monadTellMaybeT = function (dictMonadTell) {
-    return new Control_Monad_Writer_Class.MonadTell(function () {
-        return monadMaybeT(dictMonadTell.Monad0());
-    }, function ($79) {
-        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($79));
-    });
-};
-var monadWriterMaybeT = function (dictMonadWriter) {
-    return new Control_Monad_Writer_Class.MonadWriter(function () {
-        return monadTellMaybeT(dictMonadWriter.MonadTell0());
-    }, mapMaybeT(function (m) {
-        return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(Control_Monad_Writer_Class.listen(dictMonadWriter)(m))(function (v) {
-            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(Data_Functor.map(Data_Maybe.functorMaybe)(function (r) {
-                return new Data_Tuple.Tuple(r, v.value1);
-            })(v.value0));
-        });
-    }), mapMaybeT(function (m) {
-        return Control_Monad_Writer_Class.pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m)(function (v) {
-            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())((function () {
-                if (v instanceof Data_Maybe.Nothing) {
-                    return new Data_Tuple.Tuple(Data_Maybe.Nothing.value, Control_Category.id(Control_Category.categoryFn));
-                };
-                if (v instanceof Data_Maybe.Just) {
-                    return new Data_Tuple.Tuple(new Data_Maybe.Just(v.value0.value0), v.value0.value1);
-                };
-                throw new Error("Failed pattern match at Control.Monad.Maybe.Trans line 122, column 10 - line 124, column 42: " + [ v.constructor.name ]);
-            })());
-        }));
-    }));
-};
-var monadThrowMaybeT = function (dictMonadThrow) {
-    return new Control_Monad_Error_Class.MonadThrow(function () {
-        return monadMaybeT(dictMonadThrow.Monad0());
-    }, function (e) {
-        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)(e));
-    });
-};
-var monadErrorMaybeT = function (dictMonadError) {
-    return new Control_Monad_Error_Class.MonadError(function () {
-        return monadThrowMaybeT(dictMonadError.MonadThrow0());
-    }, function (v) {
-        return function (h) {
-            return MaybeT(Control_Monad_Error_Class.catchError(dictMonadError)(v)(function (a) {
-                var v1 = h(a);
-                return v1;
-            }));
-        };
-    });
-};
-var altMaybeT = function (dictMonad) {
-    return new Control_Alt.Alt(function () {
-        return functorMaybeT(((dictMonad.Bind1()).Apply0()).Functor0());
-    }, function (v) {
-        return function (v1) {
-            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v2) {
-                if (v2 instanceof Data_Maybe.Nothing) {
-                    return v1;
-                };
-                return Control_Applicative.pure(dictMonad.Applicative0())(v2);
-            });
-        };
-    });
-};
-var plusMaybeT = function (dictMonad) {
-    return new Control_Plus.Plus(function () {
-        return altMaybeT(dictMonad);
-    }, Control_Applicative.pure(dictMonad.Applicative0())(Data_Maybe.Nothing.value));
-};
-var alternativeMaybeT = function (dictMonad) {
-    return new Control_Alternative.Alternative(function () {
-        return applicativeMaybeT(dictMonad);
-    }, function () {
-        return plusMaybeT(dictMonad);
-    });
-};
-var monadZeroMaybeT = function (dictMonad) {
-    return new Control_MonadZero.MonadZero(function () {
-        return alternativeMaybeT(dictMonad);
-    }, function () {
-        return monadMaybeT(dictMonad);
-    });
-};
-var monadPlusMaybeT = function (dictMonad) {
-    return new Control_MonadPlus.MonadPlus(function () {
-        return monadZeroMaybeT(dictMonad);
-    });
-};
-module.exports = {
-    MaybeT: MaybeT, 
-    mapMaybeT: mapMaybeT, 
-    runMaybeT: runMaybeT, 
-    newtypeMaybeT: newtypeMaybeT, 
-    functorMaybeT: functorMaybeT, 
-    applyMaybeT: applyMaybeT, 
-    applicativeMaybeT: applicativeMaybeT, 
-    bindMaybeT: bindMaybeT, 
-    monadMaybeT: monadMaybeT, 
-    monadTransMaybeT: monadTransMaybeT, 
-    altMaybeT: altMaybeT, 
-    plusMaybeT: plusMaybeT, 
-    alternativeMaybeT: alternativeMaybeT, 
-    monadPlusMaybeT: monadPlusMaybeT, 
-    monadZeroMaybeT: monadZeroMaybeT, 
-    monadRecMaybeT: monadRecMaybeT, 
-    monadEffMaybe: monadEffMaybe, 
-    monadContMaybeT: monadContMaybeT, 
-    monadThrowMaybeT: monadThrowMaybeT, 
-    monadErrorMaybeT: monadErrorMaybeT, 
-    monadAskMaybeT: monadAskMaybeT, 
-    monadReaderMaybeT: monadReaderMaybeT, 
-    monadStateMaybeT: monadStateMaybeT, 
-    monadTellMaybeT: monadTellMaybeT, 
-    monadWriterMaybeT: monadWriterMaybeT
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":86,"../Control.Monad.Cont.Class":56,"../Control.Monad.Eff.Class":58,"../Control.Monad.Error.Class":71,"../Control.Monad.Reader.Class":75,"../Control.Monad.Rec.Class":77,"../Control.Monad.State.Class":80,"../Control.Monad.Trans.Class":83,"../Control.Monad.Writer.Class":84,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Functor":155,"../Data.Maybe":198,"../Data.Newtype":209,"../Data.Tuple":245,"../Prelude":268}],75:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Monad = require("../Control.Monad");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Functor = require("../Data.Functor");
-var Prelude = require("../Prelude");
-var MonadAsk = function (Monad0, ask) {
-    this.Monad0 = Monad0;
-    this.ask = ask;
-};
-var MonadReader = function (MonadAsk0, local) {
-    this.MonadAsk0 = MonadAsk0;
-    this.local = local;
-};
-var monadAskFun = new MonadAsk(function () {
-    return Control_Monad.monadFn;
-}, Control_Category.id(Control_Category.categoryFn));
-var monadReaderFun = new MonadReader(function () {
-    return monadAskFun;
-}, Control_Semigroupoid.composeFlipped(Control_Semigroupoid.semigroupoidFn));
-var local = function (dict) {
-    return dict.local;
-};
-var ask = function (dict) {
-    return dict.ask;
-};
-var asks = function (dictMonadAsk) {
-    return function (f) {
-        return Data_Functor.map((((dictMonadAsk.Monad0()).Bind1()).Apply0()).Functor0())(f)(ask(dictMonadAsk));
-    };
-};
-module.exports = {
-    MonadAsk: MonadAsk, 
-    MonadReader: MonadReader, 
-    ask: ask, 
-    asks: asks, 
-    local: local, 
-    monadAskFun: monadAskFun, 
-    monadReaderFun: monadReaderFun
-};
-
-},{"../Control.Category":47,"../Control.Monad":86,"../Control.Semigroupoid":92,"../Data.Functor":155,"../Prelude":268}],76:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
-var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Distributive = require("../Data.Distributive");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Prelude = require("../Prelude");
-var ReaderT = function (x) {
-    return x;
-};
-var withReaderT = function (f) {
-    return function (v) {
-        return function ($62) {
-            return v(f($62));
-        };
-    };
-};
-var runReaderT = function (v) {
-    return v;
-};
-var newtypeReaderT = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, ReaderT);
-var monadTransReaderT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-    return function ($63) {
-        return ReaderT(Data_Function["const"]($63));
-    };
-});
-var mapReaderT = function (f) {
-    return function (v) {
-        return function ($64) {
-            return f(v($64));
-        };
-    };
-};
-var functorReaderT = function (dictFunctor) {
-    return new Data_Functor.Functor(function ($65) {
-        return mapReaderT(Data_Functor.map(dictFunctor)($65));
-    });
-};
-var distributiveReaderT = function (dictDistributive) {
-    return new Data_Distributive.Distributive(function () {
-        return functorReaderT(dictDistributive.Functor0());
-    }, function (dictFunctor) {
-        return function (f) {
-            return function ($66) {
-                return Data_Distributive.distribute(distributiveReaderT(dictDistributive))(dictFunctor)(Data_Functor.map(dictFunctor)(f)($66));
-            };
-        };
-    }, function (dictFunctor) {
-        return function (a) {
-            return function (e) {
-                return Data_Distributive.collect(dictDistributive)(dictFunctor)(function (r) {
-                    return r(e);
-                })(a);
-            };
-        };
-    });
-};
-var applyReaderT = function (dictApply) {
-    return new Control_Apply.Apply(function () {
-        return functorReaderT(dictApply.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return function (r) {
-                return Control_Apply.apply(dictApply)(v(r))(v1(r));
-            };
-        };
-    });
-};
-var bindReaderT = function (dictBind) {
-    return new Control_Bind.Bind(function () {
-        return applyReaderT(dictBind.Apply0());
-    }, function (v) {
-        return function (k) {
-            return function (r) {
-                return Control_Bind.bind(dictBind)(v(r))(function (a) {
-                    var v1 = k(a);
-                    return v1(r);
-                });
-            };
-        };
-    });
-};
-var applicativeReaderT = function (dictApplicative) {
-    return new Control_Applicative.Applicative(function () {
-        return applyReaderT(dictApplicative.Apply0());
-    }, function ($67) {
-        return ReaderT(Data_Function["const"](Control_Applicative.pure(dictApplicative)($67)));
-    });
-};
-var monadReaderT = function (dictMonad) {
-    return new Control_Monad.Monad(function () {
-        return applicativeReaderT(dictMonad.Applicative0());
-    }, function () {
-        return bindReaderT(dictMonad.Bind1());
-    });
-};
-var monadAskReaderT = function (dictMonad) {
-    return new Control_Monad_Reader_Class.MonadAsk(function () {
-        return monadReaderT(dictMonad);
-    }, Control_Applicative.pure(dictMonad.Applicative0()));
-};
-var monadReaderReaderT = function (dictMonad) {
-    return new Control_Monad_Reader_Class.MonadReader(function () {
-        return monadAskReaderT(dictMonad);
-    }, withReaderT);
-};
-var monadContReaderT = function (dictMonadCont) {
-    return new Control_Monad_Cont_Class.MonadCont(function () {
-        return monadReaderT(dictMonadCont.Monad0());
-    }, function (f) {
-        return function (r) {
-            return Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
-                var v = f(function ($68) {
-                    return ReaderT(Data_Function["const"](c($68)));
-                });
-                return v(r);
-            });
-        };
-    });
-};
-var monadEffReader = function (dictMonadEff) {
-    return new Control_Monad_Eff_Class.MonadEff(function () {
-        return monadReaderT(dictMonadEff.Monad0());
-    }, function ($69) {
-        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($69));
-    });
-};
-var monadRecReaderT = function (dictMonadRec) {
-    return new Control_Monad_Rec_Class.MonadRec(function () {
-        return monadReaderT(dictMonadRec.Monad0());
-    }, function (k) {
-        return function (a) {
-            var k$prime = function (r) {
-                return function (a$prime) {
-                    var v = k(a$prime);
-                    return Control_Bind.bindFlipped((dictMonadRec.Monad0()).Bind1())(Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0()))(v(r));
-                };
-            };
-            return function (r) {
-                return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(k$prime(r))(a);
-            };
-        };
-    });
-};
-var monadStateReaderT = function (dictMonadState) {
-    return new Control_Monad_State_Class.MonadState(function () {
-        return monadReaderT(dictMonadState.Monad0());
-    }, function ($70) {
-        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)($70));
-    });
-};
-var monadTellReaderT = function (dictMonadTell) {
-    return new Control_Monad_Writer_Class.MonadTell(function () {
-        return monadReaderT(dictMonadTell.Monad0());
-    }, function ($71) {
-        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($71));
-    });
-};
-var monadWriterReaderT = function (dictMonadWriter) {
-    return new Control_Monad_Writer_Class.MonadWriter(function () {
-        return monadTellReaderT(dictMonadWriter.MonadTell0());
-    }, mapReaderT(Control_Monad_Writer_Class.listen(dictMonadWriter)), mapReaderT(Control_Monad_Writer_Class.pass(dictMonadWriter)));
-};
-var monadThrowReaderT = function (dictMonadThrow) {
-    return new Control_Monad_Error_Class.MonadThrow(function () {
-        return monadReaderT(dictMonadThrow.Monad0());
-    }, function ($72) {
-        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)($72));
-    });
-};
-var monadErrorReaderT = function (dictMonadError) {
-    return new Control_Monad_Error_Class.MonadError(function () {
-        return monadThrowReaderT(dictMonadError.MonadThrow0());
-    }, function (v) {
-        return function (h) {
-            return function (r) {
-                return Control_Monad_Error_Class.catchError(dictMonadError)(v(r))(function (e) {
-                    var v1 = h(e);
-                    return v1(r);
-                });
-            };
-        };
-    });
-};
-var altReaderT = function (dictAlt) {
-    return new Control_Alt.Alt(function () {
-        return functorReaderT(dictAlt.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return function (r) {
-                return Control_Alt.alt(dictAlt)(v(r))(v1(r));
-            };
-        };
-    });
-};
-var plusReaderT = function (dictPlus) {
-    return new Control_Plus.Plus(function () {
-        return altReaderT(dictPlus.Alt0());
-    }, Data_Function["const"](Control_Plus.empty(dictPlus)));
-};
-var alternativeReaderT = function (dictAlternative) {
-    return new Control_Alternative.Alternative(function () {
-        return applicativeReaderT(dictAlternative.Applicative0());
-    }, function () {
-        return plusReaderT(dictAlternative.Plus1());
-    });
-};
-var monadZeroReaderT = function (dictMonadZero) {
-    return new Control_MonadZero.MonadZero(function () {
-        return alternativeReaderT(dictMonadZero.Alternative1());
-    }, function () {
-        return monadReaderT(dictMonadZero.Monad0());
-    });
-};
-var monadPlusReaderT = function (dictMonadPlus) {
-    return new Control_MonadPlus.MonadPlus(function () {
-        return monadZeroReaderT(dictMonadPlus.MonadZero0());
-    });
-};
-module.exports = {
-    ReaderT: ReaderT, 
-    mapReaderT: mapReaderT, 
-    runReaderT: runReaderT, 
-    withReaderT: withReaderT, 
-    newtypeReaderT: newtypeReaderT, 
-    functorReaderT: functorReaderT, 
-    applyReaderT: applyReaderT, 
-    applicativeReaderT: applicativeReaderT, 
-    altReaderT: altReaderT, 
-    plusReaderT: plusReaderT, 
-    alternativeReaderT: alternativeReaderT, 
-    bindReaderT: bindReaderT, 
-    monadReaderT: monadReaderT, 
-    monadZeroReaderT: monadZeroReaderT, 
-    monadPlusReaderT: monadPlusReaderT, 
-    monadTransReaderT: monadTransReaderT, 
-    monadEffReader: monadEffReader, 
-    monadContReaderT: monadContReaderT, 
-    monadThrowReaderT: monadThrowReaderT, 
-    monadErrorReaderT: monadErrorReaderT, 
-    monadAskReaderT: monadAskReaderT, 
-    monadReaderReaderT: monadReaderReaderT, 
-    monadStateReaderT: monadStateReaderT, 
-    monadTellReaderT: monadTellReaderT, 
-    monadWriterReaderT: monadWriterReaderT, 
-    distributiveReaderT: distributiveReaderT, 
-    monadRecReaderT: monadRecReaderT
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":86,"../Control.Monad.Cont.Class":56,"../Control.Monad.Eff.Class":58,"../Control.Monad.Error.Class":71,"../Control.Monad.Reader.Class":75,"../Control.Monad.Rec.Class":77,"../Control.Monad.State.Class":80,"../Control.Monad.Trans.Class":83,"../Control.Monad.Writer.Class":84,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Distributive":135,"../Data.Function":149,"../Data.Functor":155,"../Data.Newtype":209,"../Prelude":268}],77:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Unsafe = require("../Control.Monad.Eff.Unsafe");
-var Control_Monad_ST = require("../Control.Monad.ST");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Either = require("../Data.Either");
-var Data_Functor = require("../Data.Functor");
-var Data_Identity = require("../Data.Identity");
-var Data_Unit = require("../Data.Unit");
-var Partial_Unsafe = require("../Partial.Unsafe");
-var Prelude = require("../Prelude");
-var Loop = (function () {
-    function Loop(value0) {
-        this.value0 = value0;
-    };
-    Loop.create = function (value0) {
-        return new Loop(value0);
-    };
-    return Loop;
-})();
-var Done = (function () {
-    function Done(value0) {
-        this.value0 = value0;
-    };
-    Done.create = function (value0) {
-        return new Done(value0);
-    };
-    return Done;
-})();
-var MonadRec = function (Monad0, tailRecM) {
-    this.Monad0 = Monad0;
-    this.tailRecM = tailRecM;
-};
-var tailRecM = function (dict) {
-    return dict.tailRecM;
-};
-var tailRecM2 = function (dictMonadRec) {
-    return function (f) {
-        return function (a) {
-            return function (b) {
-                return tailRecM(dictMonadRec)(function (o) {
-                    return f(o.a)(o.b);
-                })({
-                    a: a, 
-                    b: b
-                });
-            };
-        };
-    };
-};
-var tailRecM3 = function (dictMonadRec) {
-    return function (f) {
-        return function (a) {
-            return function (b) {
-                return function (c) {
-                    return tailRecM(dictMonadRec)(function (o) {
-                        return f(o.a)(o.b)(o.c);
-                    })({
-                        a: a, 
-                        b: b, 
-                        c: c
-                    });
-                };
-            };
-        };
-    };
-};
-var tailRecEff = function (f) {
-    return function (a) {
-        var fromDone = function (v) {
-            var __unused = function (dictPartial1) {
-                return function ($dollar16) {
-                    return $dollar16;
-                };
-            };
-            return __unused()((function () {
-                if (v instanceof Done) {
-                    return v.value0;
-                };
-                throw new Error("Failed pattern match at Control.Monad.Rec.Class line 130, column 28 - line 130, column 42: " + [ v.constructor.name ]);
-            })());
-        };
-        var f$prime = function ($48) {
-            return Control_Monad_Eff_Unsafe.unsafeCoerceEff(f($48));
-        };
-        return function __do() {
-            var v = f$prime(a)();
-            var v1 = {
-                value: v
-            };
-            (function () {
-                while (!(function __do() {
-                    var v2 = v1.value;
-                    if (v2 instanceof Loop) {
-                        var v3 = f$prime(v2.value0)();
-                        var v4 = v1.value = v3;
-                        return false;
-                    };
-                    if (v2 instanceof Done) {
-                        return true;
-                    };
-                    throw new Error("Failed pattern match at Control.Monad.Rec.Class line 119, column 5 - line 124, column 26: " + [ v2.constructor.name ]);
-                })()) {
-
-                };
-                return {};
-            })();
-            return Data_Functor.map(Control_Monad_Eff.functorEff)(fromDone)(Control_Monad_ST.readSTRef(v1))();
-        };
-    };
-};
-var tailRec = function (f) {
-    var go = function (__copy_v) {
-        var v = __copy_v;
-        var __tco_done = false;
-        var __tco_result;
-        var __tco_v;
-        function __tco_loop(v) {
-            if (v instanceof Loop) {
-                __tco_v = f(v.value0);
-                return;
-            };
-            if (v instanceof Done) {
-                __tco_done = true;
-                return v.value0;
-            };
-            throw new Error("Failed pattern match at Control.Monad.Rec.Class line 93, column 13 - line 96, column 18: " + [ v.constructor.name ]);
-        };
-        while (!__tco_done) {
-            __tco_result = __tco_loop(v);
-            v = __tco_v;
-        };
-        return __tco_result;
-    };
-    return function ($49) {
-        return go(f($49));
-    };
-};
-var monadRecIdentity = new MonadRec(function () {
-    return Data_Identity.monadIdentity;
-}, function (f) {
-    var runIdentity = function (v) {
-        return v;
-    };
-    return function ($50) {
-        return Data_Identity.Identity(tailRec(function ($51) {
-            return runIdentity(f($51));
-        })($50));
-    };
-});
-var monadRecEither = new MonadRec(function () {
-    return Data_Either.monadEither;
-}, function (f) {
-    return function (a0) {
-        var g = function (v) {
-            if (v instanceof Data_Either.Left) {
-                return new Done(new Data_Either.Left(v.value0));
-            };
-            if (v instanceof Data_Either.Right && v.value0 instanceof Loop) {
-                return new Loop(f(v.value0.value0));
-            };
-            if (v instanceof Data_Either.Right && v.value0 instanceof Done) {
-                return new Done(new Data_Either.Right(v.value0.value0));
-            };
-            throw new Error("Failed pattern match at Control.Monad.Rec.Class line 108, column 7 - line 108, column 33: " + [ v.constructor.name ]);
-        };
-        return tailRec(g)(f(a0));
-    };
-});
-var monadRecEff = new MonadRec(function () {
-    return Control_Monad_Eff.monadEff;
-}, tailRecEff);
-var functorStep = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        if (v instanceof Loop) {
-            return new Loop(v.value0);
-        };
-        if (v instanceof Done) {
-            return new Done(f(v.value0));
-        };
-        throw new Error("Failed pattern match at Control.Monad.Rec.Class line 28, column 3 - line 28, column 26: " + [ f.constructor.name, v.constructor.name ]);
-    };
-});
-var forever = function (dictMonadRec) {
-    return function (ma) {
-        return tailRecM(dictMonadRec)(function (u) {
-            return Data_Functor.voidRight((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(new Loop(u))(ma);
-        })(Data_Unit.unit);
-    };
-};
-var bifunctorStep = new Data_Bifunctor.Bifunctor(function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v2 instanceof Loop) {
-                return new Loop(v(v2.value0));
-            };
-            if (v2 instanceof Done) {
-                return new Done(v1(v2.value0));
-            };
-            throw new Error("Failed pattern match at Control.Monad.Rec.Class line 32, column 3 - line 32, column 34: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-        };
-    };
-});
-module.exports = {
-    Loop: Loop, 
-    Done: Done, 
-    MonadRec: MonadRec, 
-    forever: forever, 
-    tailRec: tailRec, 
-    tailRecM: tailRecM, 
-    tailRecM2: tailRecM2, 
-    tailRecM3: tailRecM3, 
-    functorStep: functorStep, 
-    bifunctorStep: bifunctorStep, 
-    monadRecIdentity: monadRecIdentity, 
-    monadRecEff: monadRecEff, 
-    monadRecEither: monadRecEither
-};
-
-},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Unsafe":68,"../Control.Monad.ST":79,"../Control.Semigroupoid":92,"../Data.Bifunctor":127,"../Data.Either":136,"../Data.Functor":155,"../Data.Identity":161,"../Data.Unit":249,"../Partial.Unsafe":265,"../Prelude":268}],78:[function(require,module,exports){
-"use strict";
-
-exports.newSTRef = function (val) {
-  return function () {
-    return { value: val };
-  };
-};
-
-exports.readSTRef = function (ref) {
-  return function () {
-    return ref.value;
-  };
-};
-
-exports.modifySTRef = function (ref) {
-  return function (f) {
-    return function () {
-      return ref.value = f(ref.value); // eslint-disable-line no-return-assign
-    };
-  };
-};
-
-exports.writeSTRef = function (ref) {
-  return function (a) {
-    return function () {
-      return ref.value = a; // eslint-disable-line no-return-assign
-    };
-  };
-};
-
-exports.runST = function (f) {
-  return f;
-};
-
-},{}],79:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var pureST = function (st) {
-    return Control_Monad_Eff.runPure($foreign.runST(st));
-};
-module.exports = {
-    pureST: pureST, 
-    modifySTRef: $foreign.modifySTRef, 
-    newSTRef: $foreign.newSTRef, 
-    readSTRef: $foreign.readSTRef, 
-    runST: $foreign.runST, 
-    writeSTRef: $foreign.writeSTRef
-};
-
-},{"../Control.Monad.Eff":70,"./foreign":78}],80:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var MonadState = function (Monad0, state) {
-    this.Monad0 = Monad0;
-    this.state = state;
-};
-var state = function (dict) {
-    return dict.state;
-};
-var put = function (dictMonadState) {
-    return function (s) {
-        return state(dictMonadState)(function (v) {
-            return new Data_Tuple.Tuple(Data_Unit.unit, s);
-        });
-    };
-};
-var modify = function (dictMonadState) {
-    return function (f) {
-        return state(dictMonadState)(function (s) {
-            return new Data_Tuple.Tuple(Data_Unit.unit, f(s));
-        });
-    };
-};
-var gets = function (dictMonadState) {
-    return function (f) {
-        return state(dictMonadState)(function (s) {
-            return new Data_Tuple.Tuple(f(s), s);
-        });
-    };
-};
-var get = function (dictMonadState) {
-    return state(dictMonadState)(function (s) {
-        return new Data_Tuple.Tuple(s, s);
-    });
-};
-module.exports = {
-    MonadState: MonadState, 
-    get: get, 
-    gets: gets, 
-    modify: modify, 
-    put: put, 
-    state: state
-};
-
-},{"../Data.Tuple":245,"../Data.Unit":249,"../Prelude":268}],81:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Lazy = require("../Control.Lazy");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
-var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var StateT = function (x) {
-    return x;
-};
-var withStateT = function (f) {
-    return function (v) {
-        return function ($107) {
-            return v(f($107));
-        };
-    };
-};
-var runStateT = function (v) {
-    return v;
-};
-var newtypeStateT = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, StateT);
-var monadTransStateT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-    return function (m) {
-        return function (s) {
-            return Control_Bind.bind(dictMonad.Bind1())(m)(function (v) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(v, s));
-            });
-        };
-    };
-});
-var mapStateT = function (f) {
-    return function (v) {
-        return function ($108) {
-            return f(v($108));
-        };
-    };
-};
-var lazyStateT = new Control_Lazy.Lazy(function (f) {
-    return function (s) {
-        var v = f(Data_Unit.unit);
-        return v(s);
-    };
-});
-var functorStateT = function (dictFunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return function (v) {
-            return function (s) {
-                return Data_Functor.map(dictFunctor)(function (v1) {
-                    return new Data_Tuple.Tuple(f(v1.value0), v1.value1);
-                })(v(s));
-            };
-        };
-    });
-};
-var execStateT = function (dictFunctor) {
-    return function (v) {
-        return function (s) {
-            return Data_Functor.map(dictFunctor)(Data_Tuple.snd)(v(s));
-        };
-    };
-};
-var evalStateT = function (dictFunctor) {
-    return function (v) {
-        return function (s) {
-            return Data_Functor.map(dictFunctor)(Data_Tuple.fst)(v(s));
-        };
-    };
-};
-var monadStateT = function (dictMonad) {
-    return new Control_Monad.Monad(function () {
-        return applicativeStateT(dictMonad);
-    }, function () {
-        return bindStateT(dictMonad);
-    });
-};
-var bindStateT = function (dictMonad) {
-    return new Control_Bind.Bind(function () {
-        return applyStateT(dictMonad);
-    }, function (v) {
-        return function (f) {
-            return function (s) {
-                return Control_Bind.bind(dictMonad.Bind1())(v(s))(function (v1) {
-                    var v3 = f(v1.value0);
-                    return v3(v1.value1);
-                });
-            };
-        };
-    });
-};
-var applyStateT = function (dictMonad) {
-    return new Control_Apply.Apply(function () {
-        return functorStateT(((dictMonad.Bind1()).Apply0()).Functor0());
-    }, Control_Monad.ap(monadStateT(dictMonad)));
-};
-var applicativeStateT = function (dictMonad) {
-    return new Control_Applicative.Applicative(function () {
-        return applyStateT(dictMonad);
-    }, function (a) {
-        return function (s) {
-            return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(a, s));
-        };
-    });
-};
-var monadAskStateT = function (dictMonadAsk) {
-    return new Control_Monad_Reader_Class.MonadAsk(function () {
-        return monadStateT(dictMonadAsk.Monad0());
-    }, Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
-};
-var monadReaderStateT = function (dictMonadReader) {
-    return new Control_Monad_Reader_Class.MonadReader(function () {
-        return monadAskStateT(dictMonadReader.MonadAsk0());
-    }, function ($109) {
-        return mapStateT(Control_Monad_Reader_Class.local(dictMonadReader)($109));
-    });
-};
-var monadContStateT = function (dictMonadCont) {
-    return new Control_Monad_Cont_Class.MonadCont(function () {
-        return monadStateT(dictMonadCont.Monad0());
-    }, function (f) {
-        return function (s) {
-            return Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
-                var v = f(function (a) {
-                    return function (s$prime) {
-                        return c(new Data_Tuple.Tuple(a, s$prime));
-                    };
-                });
-                return v(s);
-            });
-        };
-    });
-};
-var monadEffState = function (dictMonadEff) {
-    return new Control_Monad_Eff_Class.MonadEff(function () {
-        return monadStateT(dictMonadEff.Monad0());
-    }, function ($110) {
-        return Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($110));
-    });
-};
-var monadRecStateT = function (dictMonadRec) {
-    return new Control_Monad_Rec_Class.MonadRec(function () {
-        return monadStateT(dictMonadRec.Monad0());
-    }, function (f) {
-        return function (a) {
-            var f$prime = function (v) {
-                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
-                    var v1 = f(v.value0);
-                    return v1;
-                })()(v.value1))(function (v1) {
-                    return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
-                        if (v1.value0 instanceof Control_Monad_Rec_Class.Loop) {
-                            return new Control_Monad_Rec_Class.Loop(new Data_Tuple.Tuple(v1.value0.value0, v1.value1));
-                        };
-                        if (v1.value0 instanceof Control_Monad_Rec_Class.Done) {
-                            return new Control_Monad_Rec_Class.Done(new Data_Tuple.Tuple(v1.value0.value0, v1.value1));
-                        };
-                        throw new Error("Failed pattern match at Control.Monad.State.Trans line 88, column 16 - line 90, column 40: " + [ v1.value0.constructor.name ]);
-                    })());
-                });
-            };
-            return function (s) {
-                return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(f$prime)(new Data_Tuple.Tuple(a, s));
-            };
-        };
-    });
-};
-var monadStateStateT = function (dictMonad) {
-    return new Control_Monad_State_Class.MonadState(function () {
-        return monadStateT(dictMonad);
-    }, function (f) {
-        return StateT(function ($111) {
-            return Control_Applicative.pure(dictMonad.Applicative0())(f($111));
-        });
-    });
-};
-var monadTellStateT = function (dictMonadTell) {
-    return new Control_Monad_Writer_Class.MonadTell(function () {
-        return monadStateT(dictMonadTell.Monad0());
-    }, function ($112) {
-        return Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($112));
-    });
-};
-var monadWriterStateT = function (dictMonadWriter) {
-    return new Control_Monad_Writer_Class.MonadWriter(function () {
-        return monadTellStateT(dictMonadWriter.MonadTell0());
-    }, function (m) {
-        return function (s) {
-            return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(Control_Monad_Writer_Class.listen(dictMonadWriter)(m(s)))(function (v) {
-                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value0, v.value1), v.value0.value1));
-            });
-        };
-    }, function (m) {
-        return function (s) {
-            return Control_Monad_Writer_Class.pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m(s))(function (v) {
-                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value0, v.value1), v.value0.value1));
-            }));
-        };
-    });
-};
-var monadThrowStateT = function (dictMonadThrow) {
-    return new Control_Monad_Error_Class.MonadThrow(function () {
-        return monadStateT(dictMonadThrow.Monad0());
-    }, function (e) {
-        return Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)(e));
-    });
-};
-var monadErrorStateT = function (dictMonadError) {
-    return new Control_Monad_Error_Class.MonadError(function () {
-        return monadThrowStateT(dictMonadError.MonadThrow0());
-    }, function (v) {
-        return function (h) {
-            return function (s) {
-                return Control_Monad_Error_Class.catchError(dictMonadError)(v(s))(function (e) {
-                    var v1 = h(e);
-                    return v1(s);
-                });
-            };
-        };
-    });
-};
-var altStateT = function (dictMonad) {
-    return function (dictAlt) {
-        return new Control_Alt.Alt(function () {
-            return functorStateT(dictAlt.Functor0());
-        }, function (v) {
-            return function (v1) {
-                return function (s) {
-                    return Control_Alt.alt(dictAlt)(v(s))(v1(s));
-                };
-            };
-        });
-    };
-};
-var plusStateT = function (dictMonad) {
-    return function (dictPlus) {
-        return new Control_Plus.Plus(function () {
-            return altStateT(dictMonad)(dictPlus.Alt0());
-        }, function (v) {
-            return Control_Plus.empty(dictPlus);
-        });
-    };
-};
-var alternativeStateT = function (dictMonad) {
-    return function (dictAlternative) {
-        return new Control_Alternative.Alternative(function () {
-            return applicativeStateT(dictMonad);
-        }, function () {
-            return plusStateT(dictMonad)(dictAlternative.Plus1());
-        });
-    };
-};
-var monadZeroStateT = function (dictMonadZero) {
-    return new Control_MonadZero.MonadZero(function () {
-        return alternativeStateT(dictMonadZero.Monad0())(dictMonadZero.Alternative1());
-    }, function () {
-        return monadStateT(dictMonadZero.Monad0());
-    });
-};
-var monadPlusStateT = function (dictMonadPlus) {
-    return new Control_MonadPlus.MonadPlus(function () {
-        return monadZeroStateT(dictMonadPlus.MonadZero0());
-    });
-};
-module.exports = {
-    StateT: StateT, 
-    evalStateT: evalStateT, 
-    execStateT: execStateT, 
-    mapStateT: mapStateT, 
-    runStateT: runStateT, 
-    withStateT: withStateT, 
-    newtypeStateT: newtypeStateT, 
-    functorStateT: functorStateT, 
-    applyStateT: applyStateT, 
-    applicativeStateT: applicativeStateT, 
-    altStateT: altStateT, 
-    plusStateT: plusStateT, 
-    alternativeStateT: alternativeStateT, 
-    bindStateT: bindStateT, 
-    monadStateT: monadStateT, 
-    monadRecStateT: monadRecStateT, 
-    monadZeroStateT: monadZeroStateT, 
-    monadPlusStateT: monadPlusStateT, 
-    monadTransStateT: monadTransStateT, 
-    lazyStateT: lazyStateT, 
-    monadEffState: monadEffState, 
-    monadContStateT: monadContStateT, 
-    monadThrowStateT: monadThrowStateT, 
-    monadErrorStateT: monadErrorStateT, 
-    monadAskStateT: monadAskStateT, 
-    monadReaderStateT: monadReaderStateT, 
-    monadStateStateT: monadStateStateT, 
-    monadTellStateT: monadTellStateT, 
-    monadWriterStateT: monadWriterStateT
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Lazy":50,"../Control.Monad":86,"../Control.Monad.Cont.Class":56,"../Control.Monad.Eff.Class":58,"../Control.Monad.Error.Class":71,"../Control.Monad.Reader.Class":75,"../Control.Monad.Rec.Class":77,"../Control.Monad.State.Class":80,"../Control.Monad.Trans.Class":83,"../Control.Monad.Writer.Class":84,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Functor":155,"../Data.Newtype":209,"../Data.Tuple":245,"../Data.Unit":249,"../Prelude":268}],82:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_State_Trans = require("../Control.Monad.State.Trans");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Identity = require("../Data.Identity");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var withState = Control_Monad_State_Trans.withStateT;
-var runState = function (v) {
-    return function ($16) {
-        return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(v($16));
-    };
-};
-var mapState = function (f) {
-    return Control_Monad_State_Trans.mapStateT(function ($17) {
-        return Data_Identity.Identity(f(Data_Newtype.unwrap(Data_Identity.newtypeIdentity)($17)));
-    });
-};
-var execState = function (v) {
-    return function (s) {
-        var v1 = v(s);
-        return v1.value1;
-    };
-};
-var evalState = function (v) {
-    return function (s) {
-        var v1 = v(s);
-        return v1.value0;
-    };
-};
-module.exports = {
-    evalState: evalState, 
-    execState: execState, 
-    mapState: mapState, 
-    runState: runState, 
-    withState: withState
-};
-
-},{"../Control.Monad.State.Class":80,"../Control.Monad.State.Trans":81,"../Control.Semigroupoid":92,"../Data.Identity":161,"../Data.Newtype":209,"../Data.Tuple":245,"../Prelude":268}],83:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Prelude = require("../Prelude");
-var MonadTrans = function (lift) {
-    this.lift = lift;
-};
-var lift = function (dict) {
-    return dict.lift;
-};
-module.exports = {
-    MonadTrans: MonadTrans, 
-    lift: lift
-};
-
-},{"../Prelude":268}],84:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Data_Function = require("../Data.Function");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var MonadTell = function (Monad0, tell) {
-    this.Monad0 = Monad0;
-    this.tell = tell;
-};
-var MonadWriter = function (MonadTell0, listen, pass) {
-    this.MonadTell0 = MonadTell0;
-    this.listen = listen;
-    this.pass = pass;
-};
-var tell = function (dict) {
-    return dict.tell;
-};
-var pass = function (dict) {
-    return dict.pass;
-};
-var listen = function (dict) {
-    return dict.listen;
-};
-var listens = function (dictMonadWriter) {
-    return function (f) {
-        return function (m) {
-            return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(listen(dictMonadWriter)(m))(function (v) {
-                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(v.value0, f(v.value1)));
-            });
-        };
-    };
-};
-var censor = function (dictMonadWriter) {
-    return function (f) {
-        return function (m) {
-            return pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m)(function (v) {
-                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(v, f));
-            }));
-        };
-    };
-};
-module.exports = {
-    MonadTell: MonadTell, 
-    MonadWriter: MonadWriter, 
-    censor: censor, 
-    listen: listen, 
-    listens: listens, 
-    pass: pass, 
-    tell: tell
-};
-
-},{"../Control.Applicative":40,"../Control.Bind":46,"../Data.Function":149,"../Data.Tuple":245,"../Prelude":268}],85:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad = require("../Control.Monad");
-var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
-var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var WriterT = function (x) {
-    return x;
-};
-var runWriterT = function (v) {
-    return v;
-};
-var newtypeWriterT = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, WriterT);
-var monadTransWriterT = function (dictMonoid) {
-    return new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-        return function (m) {
-            return Control_Bind.bind(dictMonad.Bind1())(m)(function (v) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(v, Data_Monoid.mempty(dictMonoid)));
-            });
-        };
-    });
-};
-var mapWriterT = function (f) {
-    return function (v) {
-        return f(v);
-    };
-};
-var functorWriterT = function (dictFunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return mapWriterT(Data_Functor.map(dictFunctor)(function (v) {
-            return new Data_Tuple.Tuple(f(v.value0), v.value1);
-        }));
-    });
-};
-var execWriterT = function (dictFunctor) {
-    return function (v) {
-        return Data_Functor.map(dictFunctor)(Data_Tuple.snd)(v);
-    };
-};
-var applyWriterT = function (dictSemigroup) {
-    return function (dictApply) {
-        return new Control_Apply.Apply(function () {
-            return functorWriterT(dictApply.Functor0());
-        }, function (v) {
-            return function (v1) {
-                var k = function (v3) {
-                    return function (v4) {
-                        return new Data_Tuple.Tuple(v3.value0(v4.value0), Data_Semigroup.append(dictSemigroup)(v3.value1)(v4.value1));
-                    };
-                };
-                return Control_Apply.apply(dictApply)(Data_Functor.map(dictApply.Functor0())(k)(v))(v1);
-            };
-        });
-    };
-};
-var bindWriterT = function (dictSemigroup) {
-    return function (dictBind) {
-        return new Control_Bind.Bind(function () {
-            return applyWriterT(dictSemigroup)(dictBind.Apply0());
-        }, function (v) {
-            return function (k) {
-                return WriterT(Control_Bind.bind(dictBind)(v)(function (v1) {
-                    var v2 = k(v1.value0);
-                    return Data_Functor.map((dictBind.Apply0()).Functor0())(function (v3) {
-                        return new Data_Tuple.Tuple(v3.value0, Data_Semigroup.append(dictSemigroup)(v1.value1)(v3.value1));
-                    })(v2);
-                }));
-            };
-        });
-    };
-};
-var applicativeWriterT = function (dictMonoid) {
-    return function (dictApplicative) {
-        return new Control_Applicative.Applicative(function () {
-            return applyWriterT(dictMonoid.Semigroup0())(dictApplicative.Apply0());
-        }, function (a) {
-            return WriterT(Control_Applicative.pure(dictApplicative)(new Data_Tuple.Tuple(a, Data_Monoid.mempty(dictMonoid))));
-        });
-    };
-};
-var monadWriterT = function (dictMonoid) {
-    return function (dictMonad) {
-        return new Control_Monad.Monad(function () {
-            return applicativeWriterT(dictMonoid)(dictMonad.Applicative0());
-        }, function () {
-            return bindWriterT(dictMonoid.Semigroup0())(dictMonad.Bind1());
-        });
-    };
-};
-var monadAskWriterT = function (dictMonoid) {
-    return function (dictMonadAsk) {
-        return new Control_Monad_Reader_Class.MonadAsk(function () {
-            return monadWriterT(dictMonoid)(dictMonadAsk.Monad0());
-        }, Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
-    };
-};
-var monadReaderWriterT = function (dictMonoid) {
-    return function (dictMonadReader) {
-        return new Control_Monad_Reader_Class.MonadReader(function () {
-            return monadAskWriterT(dictMonoid)(dictMonadReader.MonadAsk0());
-        }, function (f) {
-            return mapWriterT(Control_Monad_Reader_Class.local(dictMonadReader)(f));
-        });
-    };
-};
-var monadContWriterT = function (dictMonoid) {
-    return function (dictMonadCont) {
-        return new Control_Monad_Cont_Class.MonadCont(function () {
-            return monadWriterT(dictMonoid)(dictMonadCont.Monad0());
-        }, function (f) {
-            return WriterT(Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
-                var v = f(function (a) {
-                    return WriterT(c(new Data_Tuple.Tuple(a, Data_Monoid.mempty(dictMonoid))));
-                });
-                return v;
-            }));
-        });
-    };
-};
-var monadEffWriter = function (dictMonoid) {
-    return function (dictMonadEff) {
-        return new Control_Monad_Eff_Class.MonadEff(function () {
-            return monadWriterT(dictMonoid)(dictMonadEff.Monad0());
-        }, function ($123) {
-            return Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($123));
-        });
-    };
-};
-var monadRecWriterT = function (dictMonoid) {
-    return function (dictMonadRec) {
-        return new Control_Monad_Rec_Class.MonadRec(function () {
-            return monadWriterT(dictMonoid)(dictMonadRec.Monad0());
-        }, function (f) {
-            return function (a) {
-                var f$prime = function (v) {
-                    return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
-                        var v1 = f(v.value0);
-                        return v1;
-                    })())(function (v1) {
-                        return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
-                            if (v1.value0 instanceof Control_Monad_Rec_Class.Loop) {
-                                return new Control_Monad_Rec_Class.Loop(new Data_Tuple.Tuple(v1.value0.value0, Data_Semigroup.append(dictMonoid.Semigroup0())(v.value1)(v1.value1)));
-                            };
-                            if (v1.value0 instanceof Control_Monad_Rec_Class.Done) {
-                                return new Control_Monad_Rec_Class.Done(new Data_Tuple.Tuple(v1.value0.value0, Data_Semigroup.append(dictMonoid.Semigroup0())(v.value1)(v1.value1)));
-                            };
-                            throw new Error("Failed pattern match at Control.Monad.Writer.Trans line 85, column 16 - line 87, column 47: " + [ v1.value0.constructor.name ]);
-                        })());
-                    });
-                };
-                return WriterT(Control_Monad_Rec_Class.tailRecM(dictMonadRec)(f$prime)(new Data_Tuple.Tuple(a, Data_Monoid.mempty(dictMonoid))));
-            };
-        });
-    };
-};
-var monadStateWriterT = function (dictMonoid) {
-    return function (dictMonadState) {
-        return new Control_Monad_State_Class.MonadState(function () {
-            return monadWriterT(dictMonoid)(dictMonadState.Monad0());
-        }, function (f) {
-            return Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)(f));
-        });
-    };
-};
-var monadTellWriterT = function (dictMonoid) {
-    return function (dictMonad) {
-        return new Control_Monad_Writer_Class.MonadTell(function () {
-            return monadWriterT(dictMonoid)(dictMonad);
-        }, function ($124) {
-            return WriterT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Tuple.Tuple.create(Data_Unit.unit)($124)));
-        });
-    };
-};
-var monadWriterWriterT = function (dictMonoid) {
-    return function (dictMonad) {
-        return new Control_Monad_Writer_Class.MonadWriter(function () {
-            return monadTellWriterT(dictMonoid)(dictMonad);
-        }, function (v) {
-            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v1) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v1.value0, v1.value1), v1.value1));
-            });
-        }, function (v) {
-            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v1) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(v1.value0.value0, v1.value0.value1(v1.value1)));
-            });
-        });
-    };
-};
-var monadThrowWriterT = function (dictMonoid) {
-    return function (dictMonadThrow) {
-        return new Control_Monad_Error_Class.MonadThrow(function () {
-            return monadWriterT(dictMonoid)(dictMonadThrow.Monad0());
-        }, function (e) {
-            return Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)(e));
-        });
-    };
-};
-var monadErrorWriterT = function (dictMonoid) {
-    return function (dictMonadError) {
-        return new Control_Monad_Error_Class.MonadError(function () {
-            return monadThrowWriterT(dictMonoid)(dictMonadError.MonadThrow0());
-        }, function (v) {
-            return function (h) {
-                return WriterT(Control_Monad_Error_Class.catchError(dictMonadError)(v)(function (e) {
-                    var v1 = h(e);
-                    return v1;
-                }));
-            };
-        });
-    };
-};
-var altWriterT = function (dictAlt) {
-    return new Control_Alt.Alt(function () {
-        return functorWriterT(dictAlt.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return Control_Alt.alt(dictAlt)(v)(v1);
-        };
-    });
-};
-var plusWriterT = function (dictPlus) {
-    return new Control_Plus.Plus(function () {
-        return altWriterT(dictPlus.Alt0());
-    }, Control_Plus.empty(dictPlus));
-};
-var alternativeWriterT = function (dictMonoid) {
-    return function (dictAlternative) {
-        return new Control_Alternative.Alternative(function () {
-            return applicativeWriterT(dictMonoid)(dictAlternative.Applicative0());
-        }, function () {
-            return plusWriterT(dictAlternative.Plus1());
-        });
-    };
-};
-var monadZeroWriterT = function (dictMonoid) {
-    return function (dictMonadZero) {
-        return new Control_MonadZero.MonadZero(function () {
-            return alternativeWriterT(dictMonoid)(dictMonadZero.Alternative1());
-        }, function () {
-            return monadWriterT(dictMonoid)(dictMonadZero.Monad0());
-        });
-    };
-};
-var monadPlusWriterT = function (dictMonoid) {
-    return function (dictMonadPlus) {
-        return new Control_MonadPlus.MonadPlus(function () {
-            return monadZeroWriterT(dictMonoid)(dictMonadPlus.MonadZero0());
-        });
-    };
-};
-module.exports = {
-    WriterT: WriterT, 
-    execWriterT: execWriterT, 
-    mapWriterT: mapWriterT, 
-    runWriterT: runWriterT, 
-    newtypeWriterT: newtypeWriterT, 
-    functorWriterT: functorWriterT, 
-    applyWriterT: applyWriterT, 
-    applicativeWriterT: applicativeWriterT, 
-    altWriterT: altWriterT, 
-    plusWriterT: plusWriterT, 
-    alternativeWriterT: alternativeWriterT, 
-    bindWriterT: bindWriterT, 
-    monadWriterT: monadWriterT, 
-    monadRecWriterT: monadRecWriterT, 
-    monadZeroWriterT: monadZeroWriterT, 
-    monadPlusWriterT: monadPlusWriterT, 
-    monadTransWriterT: monadTransWriterT, 
-    monadEffWriter: monadEffWriter, 
-    monadContWriterT: monadContWriterT, 
-    monadThrowWriterT: monadThrowWriterT, 
-    monadErrorWriterT: monadErrorWriterT, 
-    monadAskWriterT: monadAskWriterT, 
-    monadReaderWriterT: monadReaderWriterT, 
-    monadStateWriterT: monadStateWriterT, 
-    monadTellWriterT: monadTellWriterT, 
-    monadWriterWriterT: monadWriterWriterT
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":86,"../Control.Monad.Cont.Class":56,"../Control.Monad.Eff.Class":58,"../Control.Monad.Error.Class":71,"../Control.Monad.Reader.Class":75,"../Control.Monad.Rec.Class":77,"../Control.Monad.State.Class":80,"../Control.Monad.Trans.Class":83,"../Control.Monad.Writer.Class":84,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Functor":155,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Semigroup":229,"../Data.Tuple":245,"../Data.Unit":249,"../Prelude":268}],86:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Data_Functor = require("../Data.Functor");
-var Data_Unit = require("../Data.Unit");
-var Monad = function (Applicative0, Bind1) {
-    this.Applicative0 = Applicative0;
-    this.Bind1 = Bind1;
-};
-var whenM = function (dictMonad) {
-    return function (mb) {
-        return function (m) {
-            return Control_Bind.bind(dictMonad.Bind1())(mb)(function (v) {
-                return Control_Applicative.when(dictMonad.Applicative0())(v)(m);
-            });
-        };
-    };
-};
-var unlessM = function (dictMonad) {
-    return function (mb) {
-        return function (m) {
-            return Control_Bind.bind(dictMonad.Bind1())(mb)(function (v) {
-                return Control_Applicative.unless(dictMonad.Applicative0())(v)(m);
-            });
-        };
-    };
-};
-var monadFn = new Monad(function () {
-    return Control_Applicative.applicativeFn;
-}, function () {
-    return Control_Bind.bindFn;
-});
-var monadArray = new Monad(function () {
-    return Control_Applicative.applicativeArray;
-}, function () {
-    return Control_Bind.bindArray;
-});
-var liftM1 = function (dictMonad) {
-    return function (f) {
-        return function (a) {
-            return Control_Bind.bind(dictMonad.Bind1())(a)(function (v) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(f(v));
-            });
-        };
-    };
-};
-var ap = function (dictMonad) {
-    return function (f) {
-        return function (a) {
-            return Control_Bind.bind(dictMonad.Bind1())(f)(function (v) {
-                return Control_Bind.bind(dictMonad.Bind1())(a)(function (v1) {
-                    return Control_Applicative.pure(dictMonad.Applicative0())(v(v1));
-                });
-            });
-        };
-    };
-};
-module.exports = {
-    Monad: Monad, 
-    ap: ap, 
-    liftM1: liftM1, 
-    unlessM: unlessM, 
-    whenM: whenM, 
-    monadFn: monadFn, 
-    monadArray: monadArray
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Data.Functor":155,"../Data.Unit":249}],87:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad = require("../Control.Monad");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Data_Functor = require("../Data.Functor");
-var MonadPlus = function (MonadZero0) {
-    this.MonadZero0 = MonadZero0;
-};
-var monadPlusArray = new MonadPlus(function () {
-    return Control_MonadZero.monadZeroArray;
-});
-module.exports = {
-    MonadPlus: MonadPlus, 
-    monadPlusArray: monadPlusArray
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":86,"../Control.MonadZero":88,"../Control.Plus":91,"../Data.Functor":155}],88:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad = require("../Control.Monad");
-var Control_Plus = require("../Control.Plus");
-var Data_Functor = require("../Data.Functor");
-var Data_Unit = require("../Data.Unit");
-var MonadZero = function (Alternative1, Monad0) {
-    this.Alternative1 = Alternative1;
-    this.Monad0 = Monad0;
-};
-var monadZeroArray = new MonadZero(function () {
-    return Control_Alternative.alternativeArray;
-}, function () {
-    return Control_Monad.monadArray;
-});
-var guard = function (dictMonadZero) {
-    return function (v) {
-        if (v) {
-            return Control_Applicative.pure((dictMonadZero.Alternative1()).Applicative0())(Data_Unit.unit);
-        };
-        if (!v) {
-            return Control_Plus.empty((dictMonadZero.Alternative1()).Plus1());
-        };
-        throw new Error("Failed pattern match at Control.MonadZero line 55, column 1 - line 55, column 23: " + [ v.constructor.name ]);
-    };
-};
-module.exports = {
-    MonadZero: MonadZero, 
-    guard: guard, 
-    monadZeroArray: monadZeroArray
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":86,"../Control.Plus":91,"../Data.Functor":155,"../Data.Unit":249}],89:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Cont_Trans = require("../Control.Monad.Cont.Trans");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Eff_Ref = require("../Control.Monad.Eff.Ref");
-var Control_Monad_Eff_Unsafe = require("../Control.Monad.Eff.Unsafe");
-var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
-var Control_Monad_Maybe_Trans = require("../Control.Monad.Maybe.Trans");
-var Control_Monad_Reader_Trans = require("../Control.Monad.Reader.Trans");
-var Control_Monad_Writer_Trans = require("../Control.Monad.Writer.Trans");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Compose = require("../Data.Functor.Compose");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var ParCont = function (x) {
-    return x;
-};
-var Parallel = function (Applicative1, Monad0, parallel, sequential) {
-    this.Applicative1 = Applicative1;
-    this.Monad0 = Monad0;
-    this.parallel = parallel;
-    this.sequential = sequential;
-};
-var unsafeWithRef = Control_Monad_Eff_Unsafe.unsafeCoerceEff;
-var sequential = function (dict) {
-    return dict.sequential;
-};
-var parallel = function (dict) {
-    return dict.parallel;
-};
-var newtypeParCont = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, ParCont);
-var monadParWriterT = function (dictMonoid) {
-    return function (dictParallel) {
-        return new Parallel(function () {
-            return Control_Monad_Writer_Trans.applicativeWriterT(dictMonoid)(dictParallel.Applicative1());
-        }, function () {
-            return Control_Monad_Writer_Trans.monadWriterT(dictMonoid)(dictParallel.Monad0());
-        }, Control_Monad_Writer_Trans.mapWriterT(parallel(dictParallel)), Control_Monad_Writer_Trans.mapWriterT(sequential(dictParallel)));
-    };
-};
-var monadParReaderT = function (dictParallel) {
-    return new Parallel(function () {
-        return Control_Monad_Reader_Trans.applicativeReaderT(dictParallel.Applicative1());
-    }, function () {
-        return Control_Monad_Reader_Trans.monadReaderT(dictParallel.Monad0());
-    }, Control_Monad_Reader_Trans.mapReaderT(parallel(dictParallel)), Control_Monad_Reader_Trans.mapReaderT(sequential(dictParallel)));
-};
-var monadParMaybeT = function (dictParallel) {
-    return new Parallel(function () {
-        return Data_Functor_Compose.applicativeCompose(dictParallel.Applicative1())(Data_Maybe.applicativeMaybe);
-    }, function () {
-        return Control_Monad_Maybe_Trans.monadMaybeT(dictParallel.Monad0());
-    }, function (v) {
-        return parallel(dictParallel)(v);
-    }, function (v) {
-        return sequential(dictParallel)(v);
-    });
-};
-var monadParExceptT = function (dictParallel) {
-    return new Parallel(function () {
-        return Data_Functor_Compose.applicativeCompose(dictParallel.Applicative1())(Data_Either.applicativeEither);
-    }, function () {
-        return Control_Monad_Except_Trans.monadExceptT(dictParallel.Monad0());
-    }, function (v) {
-        return parallel(dictParallel)(v);
-    }, function (v) {
-        return sequential(dictParallel)(v);
-    });
-};
-var monadParParCont = function (dictMonadEff) {
-    return new Parallel(function () {
-        return applicativeParCont(dictMonadEff);
-    }, function () {
-        return Control_Monad_Cont_Trans.monadContT(dictMonadEff.Monad0());
-    }, ParCont, function (v) {
-        return v;
-    });
-};
-var functorParCont = function (dictMonadEff) {
-    return new Data_Functor.Functor(function (f) {
-        return function ($54) {
-            return parallel(monadParParCont(dictMonadEff))(Data_Functor.map(Control_Monad_Cont_Trans.functorContT((((dictMonadEff.Monad0()).Bind1()).Apply0()).Functor0()))(f)(sequential(monadParParCont(dictMonadEff))($54)));
-        };
-    });
-};
-var applyParCont = function (dictMonadEff) {
-    return new Control_Apply.Apply(function () {
-        return functorParCont(dictMonadEff);
-    }, function (v) {
-        return function (v1) {
-            return ParCont(function (k) {
-                return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.newRef(Data_Maybe.Nothing.value))))(function (v2) {
-                    return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.newRef(Data_Maybe.Nothing.value))))(function (v3) {
-                        return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Cont_Trans.runContT(v)(function (a) {
-                            return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v3))))(function (v4) {
-                                if (v4 instanceof Data_Maybe.Nothing) {
-                                    return Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v2)(new Data_Maybe.Just(a))));
-                                };
-                                if (v4 instanceof Data_Maybe.Just) {
-                                    return k(a(v4.value0));
-                                };
-                                throw new Error("Failed pattern match at Control.Parallel.Class line 81, column 7 - line 83, column 26: " + [ v4.constructor.name ]);
-                            });
-                        }))(function () {
-                            return Control_Monad_Cont_Trans.runContT(v1)(function (b) {
-                                return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v2))))(function (v4) {
-                                    if (v4 instanceof Data_Maybe.Nothing) {
-                                        return Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v3)(new Data_Maybe.Just(b))));
-                                    };
-                                    if (v4 instanceof Data_Maybe.Just) {
-                                        return k(v4.value0(b));
-                                    };
-                                    throw new Error("Failed pattern match at Control.Parallel.Class line 87, column 7 - line 89, column 26: " + [ v4.constructor.name ]);
-                                });
-                            });
-                        });
-                    });
-                });
-            });
-        };
-    });
-};
-var applicativeParCont = function (dictMonadEff) {
-    return new Control_Applicative.Applicative(function () {
-        return applyParCont(dictMonadEff);
-    }, function ($55) {
-        return parallel(monadParParCont(dictMonadEff))(Control_Applicative.pure(Control_Monad_Cont_Trans.applicativeContT((dictMonadEff.Monad0()).Applicative0()))($55));
-    });
-};
-var altParCont = function (dictMonadEff) {
-    return new Control_Alt.Alt(function () {
-        return functorParCont(dictMonadEff);
-    }, function (v) {
-        return function (v1) {
-            return ParCont(function (k) {
-                return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.newRef(false))))(function (v2) {
-                    return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Cont_Trans.runContT(v)(function (a) {
-                        return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v2))))(function (v3) {
-                            if (v3) {
-                                return Control_Applicative.pure((dictMonadEff.Monad0()).Applicative0())(Data_Unit.unit);
-                            };
-                            return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v2)(true))))(function () {
-                                return k(a);
-                            });
-                        });
-                    }))(function () {
-                        return Control_Monad_Cont_Trans.runContT(v1)(function (a) {
-                            return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v2))))(function (v3) {
-                                if (v3) {
-                                    return Control_Applicative.pure((dictMonadEff.Monad0()).Applicative0())(Data_Unit.unit);
-                                };
-                                return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v2)(true))))(function () {
-                                    return k(a);
-                                });
-                            });
-                        });
-                    });
-                });
-            });
-        };
-    });
-};
-var plusParCont = function (dictMonadEff) {
-    return new Control_Plus.Plus(function () {
-        return altParCont(dictMonadEff);
-    }, ParCont(function (v) {
-        return Control_Applicative.pure((dictMonadEff.Monad0()).Applicative0())(Data_Unit.unit);
-    }));
-};
-var alternativeParCont = function (dictMonadEff) {
-    return new Control_Alternative.Alternative(function () {
-        return applicativeParCont(dictMonadEff);
-    }, function () {
-        return plusParCont(dictMonadEff);
-    });
-};
-module.exports = {
-    ParCont: ParCont, 
-    Parallel: Parallel, 
-    parallel: parallel, 
-    sequential: sequential, 
-    monadParExceptT: monadParExceptT, 
-    monadParReaderT: monadParReaderT, 
-    monadParWriterT: monadParWriterT, 
-    monadParMaybeT: monadParMaybeT, 
-    newtypeParCont: newtypeParCont, 
-    functorParCont: functorParCont, 
-    applyParCont: applyParCont, 
-    applicativeParCont: applicativeParCont, 
-    altParCont: altParCont, 
-    plusParCont: plusParCont, 
-    alternativeParCont: alternativeParCont, 
-    monadParParCont: monadParParCont
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad.Cont.Trans":57,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Class":58,"../Control.Monad.Eff.Ref":66,"../Control.Monad.Eff.Unsafe":68,"../Control.Monad.Except.Trans":72,"../Control.Monad.Maybe.Trans":74,"../Control.Monad.Reader.Trans":76,"../Control.Monad.Writer.Trans":85,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.Compose":151,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Unit":249,"../Prelude":268}],90:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Parallel_Class = require("../Control.Parallel.Class");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var parTraverse_ = function (dictParallel) {
-    return function (dictFoldable) {
-        return function (f) {
-            return function ($8) {
-                return Control_Parallel_Class.sequential(dictParallel)(Data_Foldable.traverse_(dictParallel.Applicative1())(dictFoldable)(function ($9) {
-                    return Control_Parallel_Class.parallel(dictParallel)(f($9));
-                })($8));
-            };
-        };
-    };
-};
-var parTraverse = function (dictParallel) {
-    return function (dictTraversable) {
-        return function (f) {
-            return function ($10) {
-                return Control_Parallel_Class.sequential(dictParallel)(Data_Traversable.traverse(dictTraversable)(dictParallel.Applicative1())(function ($11) {
-                    return Control_Parallel_Class.parallel(dictParallel)(f($11));
-                })($10));
-            };
-        };
-    };
-};
-var parSequence_ = function (dictParallel) {
-    return function (dictFoldable) {
-        return parTraverse_(dictParallel)(dictFoldable)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var parSequence = function (dictParallel) {
-    return function (dictTraversable) {
-        return parTraverse(dictParallel)(dictTraversable)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-module.exports = {
-    parSequence: parSequence, 
-    parSequence_: parSequence_, 
-    parTraverse: parTraverse, 
-    parTraverse_: parTraverse_
-};
-
-},{"../Control.Category":47,"../Control.Parallel.Class":89,"../Control.Semigroupoid":92,"../Data.Foldable":143,"../Data.Traversable":244,"../Prelude":268}],91:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Data_Functor = require("../Data.Functor");
-var Plus = function (Alt0, empty) {
-    this.Alt0 = Alt0;
-    this.empty = empty;
-};
-var plusArray = new Plus(function () {
-    return Control_Alt.altArray;
-}, [  ]);
-var empty = function (dict) {
-    return dict.empty;
-};
-module.exports = {
-    Plus: Plus, 
-    empty: empty, 
-    plusArray: plusArray
-};
-
-},{"../Control.Alt":38,"../Data.Functor":155}],92:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Semigroupoid = function (compose) {
-    this.compose = compose;
-};
-var semigroupoidFn = new Semigroupoid(function (f) {
-    return function (g) {
-        return function (x) {
-            return f(g(x));
-        };
-    };
-});
-var compose = function (dict) {
-    return dict.compose;
-};
-var composeFlipped = function (dictSemigroupoid) {
-    return function (f) {
-        return function (g) {
-            return compose(dictSemigroupoid)(g)(f);
-        };
-    };
-};
-module.exports = {
-    Semigroupoid: Semigroupoid, 
-    compose: compose, 
-    composeFlipped: composeFlipped, 
-    semigroupoidFn: semigroupoidFn
-};
-
-},{}],93:[function(require,module,exports){
-/* global EventTarget */
-"use strict";
-
-exports._readEventTarget = function (left) {
-  return function (right) {
-    return function (foreign) {
-      return foreign instanceof EventTarget ? left("Value is not an EventTarget") : right(foreign);
-    };
-  };
-};
-
-},{}],94:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Foreign = require("../Data.Foreign");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var EventType = function (x) {
-    return x;
-};
-var wheelEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var uiEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var touchEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var readWheelEvent = Data_Foreign.unsafeReadTagged("WheelEvent");
-var readUIEvent = Data_Foreign.unsafeReadTagged("UIEvent");
-var readTouchEvent = Data_Foreign.unsafeReadTagged("TouchEvent");
-var readProgressEvent = Data_Foreign.unsafeReadTagged("ProgressEvent");
-var readMouseEvent = Data_Foreign.unsafeReadTagged("MouseEvent");
-var readKeyboardEvent = Data_Foreign.unsafeReadTagged("KeyboardEvent");
-var readInputEvent = Data_Foreign.unsafeReadTagged("InputEvent");
-var readFocusEvent = Data_Foreign.unsafeReadTagged("FocusEvent");
-var readEventTarget = $foreign._readEventTarget(Data_Either.Left.create)(Data_Either.Right.create);
-var readCustomEvent = Data_Foreign.unsafeReadTagged("CustomEvent");
-var readCompositionEvent = Data_Foreign.unsafeReadTagged("CompositionEvent");
-var readClipboardEvent = Data_Foreign.unsafeReadTagged("ClipboardEvent");
-var progressEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var ordEventType = Data_Ord.ordString;
-var newtypeEventType = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, EventType);
-var mouseEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var keyboardEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var inputEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var focusEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var eqEventType = Data_Eq.eqString;
-var customEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var compositionEventToEvent = Unsafe_Coerce.unsafeCoerce;
-var clipboardEventToEvent = Unsafe_Coerce.unsafeCoerce;
-module.exports = {
-    EventType: EventType, 
-    clipboardEventToEvent: clipboardEventToEvent, 
-    compositionEventToEvent: compositionEventToEvent, 
-    customEventToEvent: customEventToEvent, 
-    focusEventToEvent: focusEventToEvent, 
-    inputEventToEvent: inputEventToEvent, 
-    keyboardEventToEvent: keyboardEventToEvent, 
-    mouseEventToEvent: mouseEventToEvent, 
-    progressEventToEvent: progressEventToEvent, 
-    readClipboardEvent: readClipboardEvent, 
-    readCompositionEvent: readCompositionEvent, 
-    readCustomEvent: readCustomEvent, 
-    readEventTarget: readEventTarget, 
-    readFocusEvent: readFocusEvent, 
-    readInputEvent: readInputEvent, 
-    readKeyboardEvent: readKeyboardEvent, 
-    readMouseEvent: readMouseEvent, 
-    readProgressEvent: readProgressEvent, 
-    readTouchEvent: readTouchEvent, 
-    readUIEvent: readUIEvent, 
-    readWheelEvent: readWheelEvent, 
-    touchEventToEvent: touchEventToEvent, 
-    uiEventToEvent: uiEventToEvent, 
-    wheelEventToEvent: wheelEventToEvent, 
-    newtypeEventType: newtypeEventType, 
-    eqEventType: eqEventType, 
-    ordEventType: ordEventType
-};
-
-},{"../Data.Either":136,"../Data.Eq":138,"../Data.Foreign":145,"../Data.Newtype":209,"../Data.Ord":216,"../Prelude":268,"../Unsafe.Coerce":271,"./foreign":93}],95:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var DOM_Event_Types = require("../DOM.Event.Types");
-var Data_Foreign = require("../Data.Foreign");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var readFileList = Data_Foreign.unsafeReadTagged("FileList");
-var fileToBlob = Unsafe_Coerce.unsafeCoerce;
-var fileReaderToEventTarget = Unsafe_Coerce.unsafeCoerce;
-module.exports = {
-    fileReaderToEventTarget: fileReaderToEventTarget, 
-    fileToBlob: fileToBlob, 
-    readFileList: readFileList
-};
-
-},{"../DOM.Event.Types":94,"../Data.Foreign":145,"../Unsafe.Coerce":271}],96:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var DOM_Event_Types = require("../DOM.Event.Types");
-var DOM_Util_FFI = require("../DOM.Util.FFI");
-var Data_Eq = require("../Data.Eq");
-var Data_Foreign = require("../Data.Foreign");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var ElementId = function (x) {
-    return x;
-};
-var textToNode = Unsafe_Coerce.unsafeCoerce;
-var readNode = DOM_Util_FFI.unsafeReadProtoTagged("Node");
-var readElement = DOM_Util_FFI.unsafeReadProtoTagged("Element");
-var readDocument = DOM_Util_FFI.unsafeReadProtoTagged("Document");
-var processingInstructionToNode = Unsafe_Coerce.unsafeCoerce;
-var oOrdElementId = Data_Ord.ordString;
-var newtypeElementId = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, ElementId);
-var eqElementId = Data_Eq.eqString;
-var elementToParentNode = Unsafe_Coerce.unsafeCoerce;
-var elementToNonDocumentTypeChildNode = Unsafe_Coerce.unsafeCoerce;
-var elementToNode = Unsafe_Coerce.unsafeCoerce;
-var elementToEventTarget = Unsafe_Coerce.unsafeCoerce;
-var documentTypeToNode = Unsafe_Coerce.unsafeCoerce;
-var documentToParentNode = Unsafe_Coerce.unsafeCoerce;
-var documentToNonElementParentNode = Unsafe_Coerce.unsafeCoerce;
-var documentToNode = Unsafe_Coerce.unsafeCoerce;
-var documentToEventTarget = Unsafe_Coerce.unsafeCoerce;
-var documentFragmentToParentNode = Unsafe_Coerce.unsafeCoerce;
-var documentFragmentToNonElementParentNode = Unsafe_Coerce.unsafeCoerce;
-var documentFragmentToNode = Unsafe_Coerce.unsafeCoerce;
-var commentToNode = Unsafe_Coerce.unsafeCoerce;
-var characterDataToNonDocumentTypeChildNode = Unsafe_Coerce.unsafeCoerce;
-module.exports = {
-    ElementId: ElementId, 
-    characterDataToNonDocumentTypeChildNode: characterDataToNonDocumentTypeChildNode, 
-    commentToNode: commentToNode, 
-    documentFragmentToNode: documentFragmentToNode, 
-    documentFragmentToNonElementParentNode: documentFragmentToNonElementParentNode, 
-    documentFragmentToParentNode: documentFragmentToParentNode, 
-    documentToEventTarget: documentToEventTarget, 
-    documentToNode: documentToNode, 
-    documentToNonElementParentNode: documentToNonElementParentNode, 
-    documentToParentNode: documentToParentNode, 
-    documentTypeToNode: documentTypeToNode, 
-    elementToEventTarget: elementToEventTarget, 
-    elementToNode: elementToNode, 
-    elementToNonDocumentTypeChildNode: elementToNonDocumentTypeChildNode, 
-    elementToParentNode: elementToParentNode, 
-    processingInstructionToNode: processingInstructionToNode, 
-    readDocument: readDocument, 
-    readElement: readElement, 
-    readNode: readNode, 
-    textToNode: textToNode, 
-    newtypeElementId: newtypeElementId, 
-    eqElementId: eqElementId, 
-    oOrdElementId: oOrdElementId
-};
-
-},{"../DOM.Event.Types":94,"../DOM.Util.FFI":98,"../Data.Eq":138,"../Data.Foreign":145,"../Data.Newtype":209,"../Data.Ord":216,"../Prelude":268,"../Unsafe.Coerce":271}],97:[function(require,module,exports){
-"use strict";
-
-exports._unsafeReadProtoTagged = function (name) {
-  return function (failure) {
-    return function (success) {
-      return function (value) {
-        var obj = value;
-        while (obj != null) {
-          var proto = Object.getPrototypeOf(obj);
-          var ctor = proto.constructor.name;
-          if (ctor === name) {
-            return success(value);
-          } else if (ctor === "Object") {
-            return failure(Object.getPrototypeOf(value).constructor.name);
-          }
-          obj = proto;
-        }
-        return failure(Object.getPrototypeOf(value).constructor.name);
-      };
-    };
-  };
-};
-
-},{}],98:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Monad_Except = require("../Control.Monad.Except");
-var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Foreign = require("../Data.Foreign");
-var Data_Identity = require("../Data.Identity");
-var Data_List_Types = require("../Data.List.Types");
-var Prelude = require("../Prelude");
-var unsafeReadProtoTagged = function (name) {
-    return $foreign._unsafeReadProtoTagged(name)(function ($0) {
-        return Control_Monad_Except_Trans.except(Data_Identity.applicativeIdentity)(Data_Either.Left.create(Control_Applicative.pure(Data_List_Types.applicativeNonEmptyList)(Data_Foreign.TypeMismatch.create(name)($0))));
-    })(function ($1) {
-        return Control_Monad_Except_Trans.except(Data_Identity.applicativeIdentity)(Data_Either.Right.create($1));
-    });
-};
-module.exports = {
-    unsafeReadProtoTagged: unsafeReadProtoTagged
-};
-
-},{"../Control.Applicative":40,"../Control.Monad.Except":73,"../Control.Monad.Except.Trans":72,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Foreign":145,"../Data.Identity":161,"../Data.List.Types":193,"../Prelude":268,"./foreign":97}],99:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-module.exports = {};
-
-},{}],100:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-module.exports = {};
-
-},{"../Control.Monad.Eff":70}],101:[function(require,module,exports){
-"use strict";
-
-function id(x) {
-  return x;
-}
-
-exports.fromNull = function () {
-  return null;
-};
-
-exports.fromBoolean = id;
-exports.fromNumber = id;
-exports.fromString = id;
-exports.fromArray = id;
-exports.fromObject = id;
-
-exports.jsonNull = null;
-
-exports.stringify = function (j) {
-  return JSON.stringify(j);
-};
-
-var objToString = Object.prototype.toString;
-var objKeys = Object.keys;
-
-function isArray(a) {
-  return objToString.call(a) === "[object Array]";
-}
-
-exports._foldJson = function (isNull, isBool, isNum, isStr, isArr, isObj, j) {
-  if (j == null) return isNull(null);
-  else if (typeof j === "boolean") return isBool(j);
-  else if (typeof j === "number") return isNum(j);
-  else if (typeof j === "string") return isStr(j);
-  else if (objToString.call(j) === "[object Array]")
-    return isArr(j);
-  else return isObj(j);
-};
-
-exports._compare = function _compare (EQ, GT, LT, a, b) {
-  if (a == null) {
-    if (b == null) return EQ;
-    else return LT;
-  } else if (typeof a === "boolean") {
-    if (typeof b === "boolean") {
-      // boolean / boolean
-      if (a === b) return EQ;
-      else if (a === false) return LT;
-      else return GT;
-    } else if (b == null) return GT;
-    else return LT;
-  } else if (typeof a === "number") {
-    if (typeof b === "number") {
-      if (a === b) return EQ;
-      else if (a < b) return LT;
-      else return GT;
-    } else if (b == null) return GT;
-    else if (typeof b === "boolean") return GT;
-    else return LT;
-  } else if (typeof a === "string") {
-    if (typeof b === "string") {
-      if (a === b) return EQ;
-      else if (a < b) return LT;
-      else return GT;
-    } else if (b == null) return GT;
-    else if (typeof b === "boolean") return GT;
-    else if (typeof b === "number") return GT;
-    else return LT;
-  } else if (isArray(a)) {
-    if (isArray(b)) {
-      for (var i = 0; i < Math.min(a.length, b.length); i++) {
-        var ca = _compare(EQ, GT, LT, a[i], b[i]);
-        if (ca !== EQ) return ca;
-      }
-      if (a.length === b.length) return EQ;
-      else if (a.length < b.length) return LT;
-      else return GT;
-    } else if (b == null) return GT;
-    else if (typeof b === "boolean") return GT;
-    else if (typeof b === "number") return GT;
-    else if (typeof b === "string") return GT;
-    else return LT;
-  } else {
-    if (b == null) return GT;
-    else if (typeof b === "boolean") return GT;
-    else if (typeof b === "number") return GT;
-    else if (typeof b === "string") return GT;
-    else if (isArray(b)) return GT;
-    else {
-      var akeys = objKeys(a);
-      var bkeys = objKeys(b);
-      if (akeys.length < bkeys.length) return LT;
-      else if (akeys.length > bkeys.length) return GT;
-      var keys = akeys.concat(bkeys).sort();
-      for (var j = 0; j < keys.length; j++) {
-        var k = keys[j];
-        if (a[k] === undefined) return LT;
-        else if (b[k] === undefined) return GT;
-        var ck = _compare(EQ, GT, LT, a[k], b[k]);
-        if (ck !== EQ) return ck;
-      }
-      return EQ;
-    }
-  }
-};
-
-},{}],102:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Show = require("../Data.Show");
-var Data_StrMap = require("../Data.StrMap");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var verbJsonType = function (def) {
-    return function (f) {
-        return function (fold) {
-            return fold(def)(f);
-        };
-    };
-};
-var toJsonType = verbJsonType(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
-var showJson = new Data_Show.Show($foreign.stringify);
-var showJNull = new Data_Show.Show(function (v) {
-    return "null";
-});
-var jsonZero = $foreign.fromNumber(0.0);
-var jsonTrue = $foreign.fromBoolean(true);
-var jsonSingletonObject = function (key) {
-    return function (val) {
-        return $foreign.fromObject(Data_StrMap.singleton(key)(val));
-    };
-};
-var jsonSingletonArray = function (j) {
-    return $foreign.fromArray([ j ]);
-};
-var jsonFalse = $foreign.fromBoolean(false);
-var jsonEmptyString = $foreign.fromString("");
-var jsonEmptyObject = $foreign.fromObject(Data_StrMap.empty);
-var jsonEmptyArray = $foreign.fromArray([  ]);
-var jNull = Unsafe_Coerce.unsafeCoerce($foreign.jsonNull);
-var isJsonType = verbJsonType(false)(Data_Function["const"](true));
-var foldJsonString = function (d) {
-    return function (f) {
-        return function (j) {
-            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), f, Data_Function["const"](d), Data_Function["const"](d), j);
-        };
-    };
-};
-var isString = isJsonType(foldJsonString);
-var toString = toJsonType(foldJsonString);
-var foldJsonObject = function (d) {
-    return function (f) {
-        return function (j) {
-            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), f, j);
-        };
-    };
-};
-var isObject = isJsonType(foldJsonObject);
-var toObject = toJsonType(foldJsonObject);
-var foldJsonNumber = function (d) {
-    return function (f) {
-        return function (j) {
-            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), f, Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), j);
-        };
-    };
-};
-var isNumber = isJsonType(foldJsonNumber);
-var toNumber = toJsonType(foldJsonNumber);
-var foldJsonNull = function (d) {
-    return function (f) {
-        return function (j) {
-            return $foreign._foldJson(f, Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), j);
-        };
-    };
-};
-var isNull = isJsonType(foldJsonNull);
-var toNull = toJsonType(foldJsonNull);
-var foldJsonBoolean = function (d) {
-    return function (f) {
-        return function (j) {
-            return $foreign._foldJson(Data_Function["const"](d), f, Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), j);
-        };
-    };
-};
-var isBoolean = isJsonType(foldJsonBoolean);
-var toBoolean = toJsonType(foldJsonBoolean);
-var foldJsonArray = function (d) {
-    return function (f) {
-        return function (j) {
-            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), f, Data_Function["const"](d), j);
-        };
-    };
-};
-var isArray = isJsonType(foldJsonArray);
-var toArray = toJsonType(foldJsonArray);
-var foldJson = function (a) {
-    return function (b) {
-        return function (c) {
-            return function (d) {
-                return function (e) {
-                    return function (f) {
-                        return function (json) {
-                            return $foreign._foldJson(a, b, c, d, e, f, json);
-                        };
-                    };
-                };
-            };
-        };
-    };
-};
-var ordJson = new Data_Ord.Ord(function () {
-    return eqJson;
-}, function (a) {
-    return function (b) {
-        return $foreign._compare(Data_Ordering.EQ.value, Data_Ordering.GT.value, Data_Ordering.LT.value, a, b);
-    };
-});
-var eqJson = new Data_Eq.Eq(function (j1) {
-    return function (j2) {
-        return Data_Eq.eq(Data_Ordering.eqOrdering)(Data_Ord.compare(ordJson)(j1)(j2))(Data_Ordering.EQ.value);
-    };
-});
-var eqJNull = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        return true;
-    };
-});
-var ordJNull = new Data_Ord.Ord(function () {
-    return eqJNull;
-}, function (v) {
-    return function (v1) {
-        return Data_Ordering.EQ.value;
-    };
-});
-module.exports = {
-    foldJson: foldJson, 
-    foldJsonArray: foldJsonArray, 
-    foldJsonBoolean: foldJsonBoolean, 
-    foldJsonNull: foldJsonNull, 
-    foldJsonNumber: foldJsonNumber, 
-    foldJsonObject: foldJsonObject, 
-    foldJsonString: foldJsonString, 
-    isArray: isArray, 
-    isBoolean: isBoolean, 
-    isNull: isNull, 
-    isNumber: isNumber, 
-    isObject: isObject, 
-    isString: isString, 
-    jNull: jNull, 
-    jsonEmptyArray: jsonEmptyArray, 
-    jsonEmptyObject: jsonEmptyObject, 
-    jsonEmptyString: jsonEmptyString, 
-    jsonFalse: jsonFalse, 
-    jsonSingletonArray: jsonSingletonArray, 
-    jsonSingletonObject: jsonSingletonObject, 
-    jsonTrue: jsonTrue, 
-    jsonZero: jsonZero, 
-    toArray: toArray, 
-    toBoolean: toBoolean, 
-    toNull: toNull, 
-    toNumber: toNumber, 
-    toObject: toObject, 
-    toString: toString, 
-    eqJNull: eqJNull, 
-    ordJNull: ordJNull, 
-    showJNull: showJNull, 
-    eqJson: eqJson, 
-    ordJson: ordJson, 
-    showJson: showJson, 
-    fromArray: $foreign.fromArray, 
-    fromBoolean: $foreign.fromBoolean, 
-    fromNull: $foreign.fromNull, 
-    fromNumber: $foreign.fromNumber, 
-    fromObject: $foreign.fromObject, 
-    fromString: $foreign.fromString, 
-    jsonNull: $foreign.jsonNull, 
-    stringify: $foreign.stringify
-};
-
-},{"../Data.Eq":138,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.Maybe":198,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Show":233,"../Data.StrMap":237,"../Data.Tuple":245,"../Prelude":268,"../Unsafe.Coerce":271,"./foreign":101}],103:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Boolean = require("../Data.Boolean");
-var Data_Either = require("../Data.Either");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Int = require("../Data.Int");
-var Data_List = require("../Data.List");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Map = require("../Data.Map");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_StrMap = require("../Data.StrMap");
-var Data_String = require("../Data.String");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var DecodeJson = function (decodeJson) {
-    this.decodeJson = decodeJson;
-};
-var decodeVoid = new DecodeJson(function (v) {
-    return new Data_Either.Left("Value cannot be Void");
-});
-var decodeJsonString = new DecodeJson(Data_Argonaut_Core.foldJsonString(new Data_Either.Left("Value is not a String"))(Data_Either.Right.create));
-var decodeJsonNumber = new DecodeJson(Data_Argonaut_Core.foldJsonNumber(new Data_Either.Left("Value is not a Number"))(Data_Either.Right.create));
-var decodeJsonNull = new DecodeJson(Data_Argonaut_Core.foldJsonNull(new Data_Either.Left("Value is not a null"))(Data_Function["const"](new Data_Either.Right(Data_Unit.unit))));
-var decodeJsonJson = new DecodeJson(Data_Either.Right.create);
-var decodeJsonBoolean = new DecodeJson(Data_Argonaut_Core.foldJsonBoolean(new Data_Either.Left("Value is not a Boolean"))(Data_Either.Right.create));
-var decodeJson = function (dict) {
-    return dict.decodeJson;
-};
-var decodeJsonChar = new DecodeJson(function (j) {
-    return Control_Bind.bindFlipped(Data_Either.bindEither)(Data_Maybe.maybe(Data_Either.Left.create("Expected character but found: " + Data_Show.show(Data_Argonaut_Core.showJson)(j)))(Data_Either.Right.create))(Data_Functor.map(Data_Either.functorEither)(Data_String.charAt(0))(decodeJson(decodeJsonString)(j)));
-});
-var decodeJsonInt = new DecodeJson(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(function ($36) {
-    return Data_Maybe.maybe(new Data_Either.Left("Value is not an integer"))(Data_Either.Right.create)(Data_Int.fromNumber($36));
-})(decodeJson(decodeJsonNumber)));
-var decodeJObject = function ($37) {
-    return Data_Maybe.maybe(new Data_Either.Left("Value is not an Object"))(Data_Either.Right.create)(Data_Argonaut_Core.toObject($37));
-};
-var decodeJsonEither = function (dictDecodeJson) {
-    return function (dictDecodeJson1) {
-        return new DecodeJson(function (json) {
-            return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
-                return "Couldn't decode Either: " + v;
-            })(Control_Bind.bind(Data_Either.bindEither)(decodeJObject(json))(function (obj) {
-                return Control_Bind.bind(Data_Either.bindEither)(Data_Maybe.maybe(new Data_Either.Left("Expected field 'tag'"))(Data_Either.Right.create)(Data_StrMap.lookup("tag")(obj)))(function (v) {
-                    return Control_Bind.bind(Data_Either.bindEither)(Data_Maybe.maybe(new Data_Either.Left("Expected field 'value'"))(Data_Either.Right.create)(Data_StrMap.lookup("value")(obj)))(function (v1) {
-                        var v2 = Data_Argonaut_Core.toString(v);
-                        if (v2 instanceof Data_Maybe.Just && v2.value0 === "Right") {
-                            return Data_Functor.map(Data_Either.functorEither)(Data_Either.Right.create)(decodeJson(dictDecodeJson1)(v1));
-                        };
-                        if (v2 instanceof Data_Maybe.Just && v2.value0 === "Left") {
-                            return Data_Functor.map(Data_Either.functorEither)(Data_Either.Left.create)(decodeJson(dictDecodeJson)(v1));
-                        };
-                        return new Data_Either.Left("'tag' field was not \"Left\" or \"Right\"");
-                    });
-                });
-            }));
-        });
-    };
-};
-var decodeJsonMaybe = function (dictDecodeJson) {
-    return new DecodeJson(function (j) {
-        var lookupJust = function ($38) {
-            return Data_Maybe.maybe(new Data_Either.Left("Missing property 'just'"))(Data_Either.Right.create)(Data_StrMap.lookup("just")($38));
-        };
-        var decode = Control_Bind.composeKleisli(Data_Either.bindEither)(decodeJObject)(Control_Bind.composeKleisli(Data_Either.bindEither)(lookupJust)(decodeJson(decodeJsonMaybe(dictDecodeJson))));
-        var backwardsCompat = (function () {
-            if (Data_Argonaut_Core.isNull(j)) {
-                return Control_Applicative.pure(Data_Either.applicativeEither)(Data_Maybe.Nothing.value);
-            };
-            if (Data_Boolean.otherwise) {
-                return Data_Functor.map(Data_Either.functorEither)(Data_Maybe.Just.create)(decodeJson(dictDecodeJson)(j));
-            };
-            throw new Error("Failed pattern match at Data.Argonaut.Decode.Class line 25, column 7 - line 35, column 42: " + [  ]);
-        })();
-        var v = decode(j);
-        if (v instanceof Data_Either.Right) {
-            return new Data_Either.Right(v.value0);
-        };
-        if (v instanceof Data_Either.Left) {
-            return backwardsCompat;
-        };
-        throw new Error("Failed pattern match at Data.Argonaut.Decode.Class line 25, column 7 - line 27, column 34: " + [ v.constructor.name ]);
-    });
-};
-var decodeStrMap = function (dictDecodeJson) {
-    return new DecodeJson(function ($39) {
-        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
-            return "Couldn't decode StrMap: " + v;
-        })(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(Data_Traversable.traverse(Data_StrMap.traversableStrMap)(Data_Either.applicativeEither)(decodeJson(dictDecodeJson)))(decodeJObject)($39));
-    });
-};
-var decodeJArray = function ($40) {
-    return Data_Maybe.maybe(new Data_Either.Left("Value is not an Array"))(Data_Either.Right.create)(Data_Argonaut_Core.toArray($40));
-};
-var decodeList = function (dictDecodeJson) {
-    return new DecodeJson(function ($41) {
-        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
-            return "Couldn't decode List: " + v;
-        })(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(Data_Traversable.traverse(Data_List_Types.traversableList)(Data_Either.applicativeEither)(decodeJson(dictDecodeJson)))(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Either.functorEither)(Data_List.fromFoldable(Data_Foldable.foldableArray)))(decodeJArray))($41));
-    });
-};
-var decodeJsonTuple = function (dictDecodeJson) {
-    return function (dictDecodeJson1) {
-        return new DecodeJson(function (j) {
-            var f = function (v) {
-                if (v instanceof Data_List_Types.Cons && (v.value1 instanceof Data_List_Types.Cons && v.value1.value1 instanceof Data_List_Types.Nil)) {
-                    return Control_Apply.apply(Data_Either.applyEither)(Data_Functor.map(Data_Either.functorEither)(Data_Tuple.Tuple.create)(decodeJson(dictDecodeJson)(v.value0)))(decodeJson(dictDecodeJson1)(v.value1.value0));
-                };
-                return new Data_Either.Left("Couldn't decode Tuple");
-            };
-            return Control_Bind.bind(Data_Either.bindEither)(decodeJson(decodeList(decodeJsonJson))(j))(f);
-        });
-    };
-};
-var decodeMap = function (dictOrd) {
-    return function (dictDecodeJson) {
-        return function (dictDecodeJson1) {
-            return new DecodeJson(function ($42) {
-                return Data_Functor.map(Data_Either.functorEither)(Data_Map.fromFoldable(dictOrd)(Data_List_Types.foldableList))(decodeJson(decodeList(decodeJsonTuple(dictDecodeJson)(dictDecodeJson1)))($42));
-            });
-        };
-    };
-};
-var decodeArray = function (dictDecodeJson) {
-    return new DecodeJson(function ($43) {
-        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
-            return "Couldn't decode Array: " + v;
-        })(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(Data_Traversable.traverse(Data_Traversable.traversableArray)(Data_Either.applicativeEither)(decodeJson(dictDecodeJson)))(decodeJArray)($43));
-    });
-};
-module.exports = {
-    DecodeJson: DecodeJson, 
-    decodeJson: decodeJson, 
-    decodeJsonMaybe: decodeJsonMaybe, 
-    decodeJsonTuple: decodeJsonTuple, 
-    decodeJsonEither: decodeJsonEither, 
-    decodeJsonNull: decodeJsonNull, 
-    decodeJsonBoolean: decodeJsonBoolean, 
-    decodeJsonNumber: decodeJsonNumber, 
-    decodeJsonInt: decodeJsonInt, 
-    decodeJsonString: decodeJsonString, 
-    decodeJsonJson: decodeJsonJson, 
-    decodeJsonChar: decodeJsonChar, 
-    decodeStrMap: decodeStrMap, 
-    decodeArray: decodeArray, 
-    decodeList: decodeList, 
-    decodeMap: decodeMap, 
-    decodeVoid: decodeVoid
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Semigroupoid":92,"../Data.Argonaut.Core":102,"../Data.Bifunctor":127,"../Data.Boolean":129,"../Data.Either":136,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.Int":165,"../Data.List":194,"../Data.List.Types":193,"../Data.Map":195,"../Data.Maybe":198,"../Data.Semigroup":229,"../Data.Show":233,"../Data.StrMap":237,"../Data.String":241,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unit":249,"../Prelude":268}],104:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_StrMap = require("../Data.StrMap");
-var Prelude = require("../Prelude");
-var getFieldOptional = function (dictDecodeJson) {
-    return function (o) {
-        return function (s) {
-            var decode = function (json) {
-                return Data_Functor.map(Data_Either.functorEither)(Data_Maybe.Just.create)(Data_Argonaut_Decode_Class.decodeJson(dictDecodeJson)(json));
-            };
-            return Data_Maybe.maybe(Control_Applicative.pure(Data_Either.applicativeEither)(Data_Maybe.Nothing.value))(decode)(Data_StrMap.lookup(s)(o));
-        };
-    };
-};
-var getField = function (dictDecodeJson) {
-    return function (o) {
-        return function (s) {
-            return Data_Maybe.maybe(Data_Either.Left.create("Expected field " + Data_Show.show(Data_Show.showString)(s)))(Data_Argonaut_Decode_Class.decodeJson(dictDecodeJson))(Data_StrMap.lookup(s)(o));
-        };
-    };
-};
-module.exports = {
-    getField: getField, 
-    getFieldOptional: getFieldOptional
-};
-
-},{"../Control.Applicative":40,"../Data.Argonaut.Core":102,"../Data.Argonaut.Decode.Class":103,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Maybe":198,"../Data.Semigroup":229,"../Data.Show":233,"../Data.StrMap":237,"../Prelude":268}],105:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
-var Data_Argonaut_Decode_Combinators = require("../Data.Argonaut.Decode.Combinators");
-module.exports = {};
-
-},{"../Data.Argonaut.Decode.Class":103,"../Data.Argonaut.Decode.Combinators":104}],106:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Int = require("../Data.Int");
-var Data_List = require("../Data.List");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Map = require("../Data.Map");
-var Data_Maybe = require("../Data.Maybe");
-var Data_StrMap = require("../Data.StrMap");
-var Data_String = require("../Data.String");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Data_Void = require("../Data.Void");
-var Prelude = require("../Prelude");
-var EncodeJson = function (encodeJson) {
-    this.encodeJson = encodeJson;
-};
-var encodeVoid = new EncodeJson(Data_Void.absurd);
-var encodeJsonUnit = new EncodeJson(Data_Function["const"](Data_Argonaut_Core.jsonNull));
-var encodeJsonJson = new EncodeJson(Control_Category.id(Control_Category.categoryFn));
-var encodeJsonJString = new EncodeJson(Data_Argonaut_Core.fromString);
-var encodeJsonJNumber = new EncodeJson(Data_Argonaut_Core.fromNumber);
-var encodeJsonJBoolean = new EncodeJson(Data_Argonaut_Core.fromBoolean);
-var encodeJsonInt = new EncodeJson(function ($19) {
-    return Data_Argonaut_Core.fromNumber(Data_Int.toNumber($19));
-});
-var encodeJson = function (dict) {
-    return dict.encodeJson;
-};
-var encodeJsonArray = function (dictEncodeJson) {
-    return new EncodeJson(function (json) {
-        return Data_Argonaut_Core.fromArray(Data_Functor.map(Data_Functor.functorArray)(encodeJson(dictEncodeJson))(json));
-    });
-};
-var encodeJsonChar = new EncodeJson(function ($20) {
-    return encodeJson(encodeJsonJString)(Data_String.singleton($20));
-});
-var encodeJsonEither = function (dictEncodeJson) {
-    return function (dictEncodeJson1) {
-        return new EncodeJson((function () {
-            var obj = function (dictEncodeJson2) {
-                return function (tag) {
-                    return function (x) {
-                        return Data_Argonaut_Core.fromObject(Data_StrMap.fromFoldable(Data_List_Types.foldableList)(new Data_List_Types.Cons(new Data_Tuple.Tuple("tag", Data_Argonaut_Core.fromString(tag)), new Data_List_Types.Cons(new Data_Tuple.Tuple("value", encodeJson(dictEncodeJson2)(x)), Data_List_Types.Nil.value))));
-                    };
-                };
-            };
-            return Data_Either.either(obj(dictEncodeJson)("Left"))(obj(dictEncodeJson1)("Right"));
-        })());
-    };
-};
-var encodeJsonList = function (dictEncodeJson) {
-    return new EncodeJson(function ($21) {
-        return Data_Argonaut_Core.fromArray(Data_Functor.map(Data_Functor.functorArray)(encodeJson(dictEncodeJson))(Data_List.toUnfoldable(Data_Unfoldable.unfoldableArray)($21)));
-    });
-};
-var encodeJsonMaybe = function (dictEncodeJson) {
-    return new EncodeJson(function (v) {
-        if (v instanceof Data_Maybe.Nothing) {
-            return Data_Argonaut_Core.jsonEmptyObject;
-        };
-        if (v instanceof Data_Maybe.Just) {
-            return Data_Argonaut_Core.jsonSingletonObject("just")(encodeJson(dictEncodeJson)(v.value0));
-        };
-        throw new Error("Failed pattern match at Data.Argonaut.Encode.Class line 19, column 3 - line 19, column 40: " + [ v.constructor.name ]);
-    });
-};
-var encodeJsonTuple = function (dictEncodeJson) {
-    return function (dictEncodeJson1) {
-        return new EncodeJson(function (v) {
-            return encodeJson(encodeJsonArray(encodeJsonJson))([ encodeJson(dictEncodeJson)(v.value0), encodeJson(dictEncodeJson1)(v.value1) ]);
-        });
-    };
-};
-var encodeMap = function (dictOrd) {
-    return function (dictEncodeJson) {
-        return function (dictEncodeJson1) {
-            return new EncodeJson(function ($22) {
-                return encodeJson(encodeJsonList(encodeJsonTuple(dictEncodeJson)(dictEncodeJson1)))(Data_Map.toUnfoldable(Data_List_Types.unfoldableList)($22));
-            });
-        };
-    };
-};
-var encodeStrMap = function (dictEncodeJson) {
-    return new EncodeJson(function ($23) {
-        return Data_Argonaut_Core.fromObject(Data_Functor.map(Data_StrMap.functorStrMap)(encodeJson(dictEncodeJson))($23));
-    });
-};
-module.exports = {
-    EncodeJson: EncodeJson, 
-    encodeJson: encodeJson, 
-    encodeJsonMaybe: encodeJsonMaybe, 
-    encodeJsonTuple: encodeJsonTuple, 
-    encodeJsonEither: encodeJsonEither, 
-    encodeJsonUnit: encodeJsonUnit, 
-    encodeJsonJBoolean: encodeJsonJBoolean, 
-    encodeJsonJNumber: encodeJsonJNumber, 
-    encodeJsonInt: encodeJsonInt, 
-    encodeJsonJString: encodeJsonJString, 
-    encodeJsonJson: encodeJsonJson, 
-    encodeJsonChar: encodeJsonChar, 
-    encodeJsonArray: encodeJsonArray, 
-    encodeJsonList: encodeJsonList, 
-    encodeStrMap: encodeStrMap, 
-    encodeMap: encodeMap, 
-    encodeVoid: encodeVoid
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Argonaut.Core":102,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Int":165,"../Data.List":194,"../Data.List.Types":193,"../Data.Map":195,"../Data.Maybe":198,"../Data.StrMap":237,"../Data.String":241,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Data.Void":250,"../Prelude":268}],107:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Argonaut_Encode_Class = require("../Data.Argonaut.Encode.Class");
-var Data_StrMap = require("../Data.StrMap");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var extend = function (dictEncodeJson) {
-    return function (v) {
-        return function ($6) {
-            return Data_Argonaut_Core.foldJsonObject(Data_Argonaut_Core.jsonSingletonObject(v.value0)(v.value1))(function ($7) {
-                return Data_Argonaut_Core.fromObject(Data_StrMap.insert(v.value0)(v.value1)($7));
-            })(Data_Argonaut_Encode_Class.encodeJson(dictEncodeJson)($6));
-        };
-    };
-};
-var assoc = function (dictEncodeJson) {
-    return function (k) {
-        return function ($8) {
-            return Data_Tuple.Tuple.create(k)(Data_Argonaut_Encode_Class.encodeJson(dictEncodeJson)($8));
-        };
-    };
-};
-module.exports = {
-    assoc: assoc, 
-    extend: extend
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Argonaut.Core":102,"../Data.Argonaut.Encode.Class":106,"../Data.StrMap":237,"../Data.Tuple":245,"../Prelude":268}],108:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Argonaut_Encode_Class = require("../Data.Argonaut.Encode.Class");
-var Data_Argonaut_Encode_Combinators = require("../Data.Argonaut.Encode.Combinators");
-module.exports = {};
-
-},{"../Data.Argonaut.Encode.Class":106,"../Data.Argonaut.Encode.Combinators":107}],109:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
-var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
-var Data_Argonaut_Encode = require("../Data.Argonaut.Encode");
-var Data_Argonaut_Encode_Class = require("../Data.Argonaut.Encode.Class");
-var Data_Array = require("../Data.Array");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Int = require("../Data.Int");
-var Data_List = require("../Data.List");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_StrMap = require("../Data.StrMap");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Prelude = require("../Prelude");
-var JsonPrim = function (x) {
-    return x;
-};
-var JCursorTop = (function () {
-    function JCursorTop() {
-
-    };
-    JCursorTop.value = new JCursorTop();
-    return JCursorTop;
-})();
-var JField = (function () {
-    function JField(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    JField.create = function (value0) {
-        return function (value1) {
-            return new JField(value0, value1);
-        };
-    };
-    return JField;
-})();
-var JIndex = (function () {
-    function JIndex(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    JIndex.create = function (value0) {
-        return function (value1) {
-            return new JIndex(value0, value1);
-        };
-    };
-    return JIndex;
-})();
-var showJCursor = new Data_Show.Show(function (v) {
-    if (v instanceof JCursorTop) {
-        return "JCursorTop";
-    };
-    if (v instanceof JField) {
-        return "(JField " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(showJCursor)(v.value1) + ")")));
-    };
-    if (v instanceof JIndex) {
-        return "(JIndex " + (Data_Show.show(Data_Show.showInt)(v.value0) + (" " + (Data_Show.show(showJCursor)(v.value1) + ")")));
-    };
-    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 28, column 3 - line 29, column 3: " + [ v.constructor.name ]);
-});
-var semigroupJCursor = new Data_Semigroup.Semigroup(function (v) {
-    return function (v1) {
-        if (v1 instanceof JCursorTop) {
-            return v;
-        };
-        if (v instanceof JCursorTop) {
-            return v1;
-        };
-        if (v instanceof JField) {
-            return new JField(v.value0, Data_Semigroup.append(semigroupJCursor)(v.value1)(v1));
-        };
-        if (v instanceof JIndex) {
-            return new JIndex(v.value0, Data_Semigroup.append(semigroupJCursor)(v.value1)(v1));
-        };
-        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 38, column 3 - line 38, column 26: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var runJsonPrim = function (v) {
-    return v;
-};
-var showJsonPrim = new Data_Show.Show(function (p) {
-    return runJsonPrim(p)(Data_Show.show(Data_Argonaut_Core.showJNull))(Data_Show.show(Data_Show.showBoolean))(Data_Show.show(Data_Show.showNumber))(Data_Show.show(Data_Show.showString));
-});
-var print = function (v) {
-    if (v instanceof JCursorTop) {
-        return "";
-    };
-    if (v instanceof JField) {
-        return "." + (v.value0 + Data_Show.show(showJCursor)(v.value1));
-    };
-    if (v instanceof JIndex) {
-        return "[" + (Data_Show.show(Data_Show.showInt)(v.value0) + ("]" + Data_Show.show(showJCursor)(v.value1)));
-    };
-    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 33, column 1 - line 34, column 1: " + [ v.constructor.name ]);
-};
-var primToJson = function (p) {
-    return runJsonPrim(p)(Data_Argonaut_Core.fromNull)(Data_Argonaut_Core.fromBoolean)(Data_Argonaut_Core.fromNumber)(Data_Argonaut_Core.fromString);
-};
-var primStr = function (v) {
-    return function (v1) {
-        return function (v2) {
-            return function (v3) {
-                return function (f) {
-                    return f(v);
-                };
-            };
-        };
-    };
-};
-var primNum = function (v) {
-    return function (v1) {
-        return function (v2) {
-            return function (f) {
-                return function (v3) {
-                    return f(v);
-                };
-            };
-        };
-    };
-};
-var primNull = function (f) {
-    return function (v) {
-        return function (v1) {
-            return function (v2) {
-                return f(Data_Argonaut_Core.jNull);
-            };
-        };
-    };
-};
-var primBool = function (v) {
-    return function (v1) {
-        return function (f) {
-            return function (v2) {
-                return function (v3) {
-                    return f(v);
-                };
-            };
-        };
-    };
-};
-var toPrims = (function () {
-    var objFn = function (obj) {
-        var f = function (v) {
-            return Data_Functor.map(Data_List_Types.functorList)(function (t) {
-                return new Data_Tuple.Tuple(new JField(v.value0, Data_Tuple.fst(t)), Data_Tuple.snd(t));
-            })(toPrims(v.value1));
-        };
-        return Control_Bind.bind(Data_List_Types.bindList)(Data_StrMap.toUnfoldable(Data_List_Types.unfoldableList)(obj))(f);
-    };
-    var mkTop = function (p) {
-        return Data_List.singleton(new Data_Tuple.Tuple(JCursorTop.value, p));
-    };
-    var nullFn = function (v) {
-        return mkTop(primNull);
-    };
-    var numFn = function (n) {
-        return mkTop(primNum(n));
-    };
-    var strFn = function (s) {
-        return mkTop(primStr(s));
-    };
-    var boolFn = function (b) {
-        return mkTop(primBool(b));
-    };
-    var arrFn$prime = function (v) {
-        return Data_List.fromFoldable(Data_List_Types.foldableList)(Data_Functor.map(Data_List_Types.functorList)(function (t) {
-            return new Data_Tuple.Tuple(new JIndex(v.value0, Data_Tuple.fst(t)), Data_Tuple.snd(t));
-        })(toPrims(v.value1)));
-    };
-    var arrFn = function (arr) {
-        var zipped = Data_List.zipWith(Data_Tuple.Tuple.create)(Data_List.range(0)(Data_Array.length(arr) - 1 | 0))(Data_List.fromFoldable(Data_Foldable.foldableArray)(arr));
-        return Control_Bind.bind(Data_List_Types.bindList)(zipped)(arrFn$prime);
-    };
-    return Data_Argonaut_Core.foldJson(nullFn)(boolFn)(numFn)(strFn)(arrFn)(objFn);
-})();
-var monoidJCursor = new Data_Monoid.Monoid(function () {
-    return semigroupJCursor;
-}, JCursorTop.value);
-var inferEmpty = function (v) {
-    if (v instanceof JCursorTop) {
-        return Data_Argonaut_Core.jsonNull;
-    };
-    if (v instanceof JField) {
-        return Data_Argonaut_Core.jsonEmptyObject;
-    };
-    if (v instanceof JIndex) {
-        return Data_Argonaut_Core.jsonEmptyArray;
-    };
-    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 98, column 1 - line 98, column 37: " + [ v.constructor.name ]);
-};
-var fail = function (dictShow) {
-    return function (x) {
-        return Data_Either.Left.create("Expected String or Number but found: " + Data_Show.show(dictShow)(x));
-    };
-};
-var eqJCursor = new Data_Eq.Eq(function (x) {
-    return function (y) {
-        if (x instanceof JCursorTop && y instanceof JCursorTop) {
-            return true;
-        };
-        if (x instanceof JField && y instanceof JField) {
-            return x.value0 === y.value0 && Data_Eq.eq(eqJCursor)(x.value1)(y.value1);
-        };
-        if (x instanceof JIndex && y instanceof JIndex) {
-            return x.value0 === y.value0 && Data_Eq.eq(eqJCursor)(x.value1)(y.value1);
-        };
-        return false;
-    };
-});
-var ordJCursor = new Data_Ord.Ord(function () {
-    return eqJCursor;
-}, function (x) {
-    return function (y) {
-        if (x instanceof JCursorTop && y instanceof JCursorTop) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof JCursorTop) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof JCursorTop) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof JField && y instanceof JField) {
-            var v = Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
-            if (v instanceof Data_Ordering.LT) {
-                return Data_Ordering.LT.value;
-            };
-            if (v instanceof Data_Ordering.GT) {
-                return Data_Ordering.GT.value;
-            };
-            return Data_Ord.compare(ordJCursor)(x.value1)(y.value1);
-        };
-        if (x instanceof JField) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof JField) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof JIndex && y instanceof JIndex) {
-            var v = Data_Ord.compare(Data_Ord.ordInt)(x.value0)(y.value0);
-            if (v instanceof Data_Ordering.LT) {
-                return Data_Ordering.LT.value;
-            };
-            if (v instanceof Data_Ordering.GT) {
-                return Data_Ordering.GT.value;
-            };
-            return Data_Ord.compare(ordJCursor)(x.value1)(y.value1);
-        };
-        throw new Error("Failed pattern match: " + [ x.constructor.name, y.constructor.name ]);
-    };
-});
-var encodeJsonJCursor = new Data_Argonaut_Encode_Class.EncodeJson((function () {
-    var loop = function (v) {
-        if (v instanceof JCursorTop) {
-            return [  ];
-        };
-        if (v instanceof JField) {
-            return Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Data_Argonaut_Encode_Class.encodeJson(Data_Argonaut_Encode_Class.encodeJsonJString)(v.value0) ])(loop(v.value1));
-        };
-        if (v instanceof JIndex) {
-            return Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Data_Argonaut_Encode_Class.encodeJson(Data_Argonaut_Encode_Class.encodeJsonInt)(v.value0) ])(loop(v.value1));
-        };
-        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 47, column 16 - line 50, column 49: " + [ v.constructor.name ]);
-    };
-    return function ($151) {
-        return Data_Argonaut_Encode_Class.encodeJson(Data_Argonaut_Encode_Class.encodeJsonArray(Data_Argonaut_Encode_Class.encodeJsonJson))(loop($151));
-    };
-})());
-var downIndex = function (i) {
-    var downIndex$prime = function (v) {
-        if (v instanceof JCursorTop) {
-            return new JIndex(i, JCursorTop.value);
-        };
-        if (v instanceof JField) {
-            return new JField(v.value0, downIndex$prime(v.value1));
-        };
-        if (v instanceof JIndex) {
-            return new JIndex(v.value0, downIndex$prime(v.value1));
-        };
-        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 87, column 15 - line 90, column 54: " + [ v.constructor.name ]);
-    };
-    return downIndex$prime;
-};
-var downField = function (i) {
-    var downField$prime = function (v) {
-        if (v instanceof JCursorTop) {
-            return new JField(i, JCursorTop.value);
-        };
-        if (v instanceof JField) {
-            return new JField(v.value0, downField$prime(v.value1));
-        };
-        if (v instanceof JIndex) {
-            return new JIndex(v.value0, downField$prime(v.value1));
-        };
-        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 81, column 15 - line 84, column 54: " + [ v.constructor.name ]);
-    };
-    return downField$prime;
-};
-var insideOut = function (v) {
-    if (v instanceof JCursorTop) {
-        return JCursorTop.value;
-    };
-    if (v instanceof JField) {
-        return downField(v.value0)(insideOut(v.value1));
-    };
-    if (v instanceof JIndex) {
-        return downIndex(v.value0)(insideOut(v.value1));
-    };
-    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 76, column 1 - line 76, column 34: " + [ v.constructor.name ]);
-};
-var decodeJsonJCursor = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
-    var goNum = function (c) {
-        return function ($152) {
-            return Data_Maybe.maybe(new Data_Either.Left("Not an Int"))(function ($153) {
-                return Data_Either.Right.create(Data_Function.flip(JIndex.create)(c)($153));
-            })(Data_Int.fromNumber($152));
-        };
-    };
-    var loop = function (arr) {
-        return Data_Maybe.maybe(new Data_Either.Right(JCursorTop.value))(goLoop)(Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.Tuple.create)(Data_Array.head(arr)))(Data_Array.tail(arr)));
-    };
-    var goLoop = function (v) {
-        return Control_Bind.bind(Data_Either.bindEither)(loop(v.value1))(function (v1) {
-            return Data_Argonaut_Core.foldJson(fail(Data_Argonaut_Core.showJNull))(fail(Data_Show.showBoolean))(goNum(v1))(function ($154) {
-                return Data_Either.Right.create(Data_Function.flip(JField.create)(v1)($154));
-            })(fail(Data_Show.showArray(Data_Argonaut_Core.showJson)))(fail(Data_StrMap.showStrMap(Data_Argonaut_Core.showJson)))(v.value0);
-        });
-    };
-    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeArray(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(loop);
-});
-var cursorSet = function (v) {
-    return function (v1) {
-        if (v instanceof JCursorTop) {
-            return function ($155) {
-                return Control_Applicative.pure(Data_Maybe.applicativeMaybe)(Data_Function["const"](v1)($155));
-            };
-        };
-        if (v instanceof JField) {
-            var mergeObjs = function (m) {
-                return Data_Functor.map(Data_Maybe.functorMaybe)(function ($156) {
-                    return Data_Argonaut_Core.fromObject(Data_Function.flip(Data_StrMap.insert(v.value0))(m)($156));
-                })(cursorSet(v.value1)(v1)(Data_Maybe.fromMaybe(inferEmpty(v.value1))(Data_StrMap.lookup(v.value0)(m))));
-            };
-            var defaultObj = Data_Functor.map(Data_Maybe.functorMaybe)(function ($157) {
-                return Data_Argonaut_Core.fromObject(Data_StrMap.singleton(v.value0)($157));
-            })(cursorSet(v.value1)(v1)(inferEmpty(v.value1)));
-            return Data_Argonaut_Core.foldJsonObject(defaultObj)(mergeObjs);
-        };
-        if (v instanceof JIndex) {
-            var setArr = function (__copy_xs) {
-                return function (__copy_i$prime) {
-                    return function (__copy_v$prime) {
-                        var xs = __copy_xs;
-                        var i$prime = __copy_i$prime;
-                        var v$prime = __copy_v$prime;
-                        var __tco_done = false;
-                        var __tco_result;
-                        var __tco_xs;
-                        var __tco_i$prime;
-                        var __tco_v$prime;
-                        function __tco_loop(xs, i$prime, v$prime) {
-                            var len = Data_Array.length(xs);
-                            var $138 = i$prime < 0;
-                            if ($138) {
-                                __tco_done = true;
-                                return Data_Maybe.Nothing.value;
-                            };
-                            var $139 = i$prime >= len;
-                            if ($139) {
-                                __tco_xs = Data_Semigroup.append(Data_Semigroup.semigroupArray)(xs)(Data_Unfoldable.replicate(Data_Unfoldable.unfoldableArray)((i$prime - len | 0) + 1 | 0)(Data_Argonaut_Core.jsonNull));
-                                __tco_i$prime = i$prime;
-                                __tco_v$prime = v$prime;
-                                return;
-                            };
-                            __tco_done = true;
-                            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Argonaut_Core.fromArray)(Data_Array.updateAt(i$prime)(v$prime)(xs));
-                        };
-                        while (!__tco_done) {
-                            __tco_result = __tco_loop(xs, i$prime, v$prime);
-                            xs = __tco_xs;
-                            i$prime = __tco_i$prime;
-                            v$prime = __tco_v$prime;
-                        };
-                        return __tco_result;
-                    };
-                };
-            };
-            var mergeArrs = function (a) {
-                return Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(setArr(a)(v.value0))(cursorSet(v.value1)(v1)(Data_Maybe.fromMaybe(inferEmpty(v.value1))(Data_Array.index(a)(v.value0))));
-            };
-            var defaultArr = Data_Functor.map(Data_Maybe.functorMaybe)(Data_Argonaut_Core.fromArray)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Data_Function.flip(Data_Array.updateAt(v.value0))(Data_Unfoldable.replicate(Data_Unfoldable.unfoldableArray)(v.value0 + 1 | 0)(Data_Argonaut_Core.jsonNull)))(cursorSet(v.value1)(v1)(inferEmpty(v.value1))));
-            return Data_Argonaut_Core.foldJsonArray(defaultArr)(mergeArrs);
-        };
-        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 103, column 1 - line 103, column 42: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-};
-var fromPrims = function (lst) {
-    var f = function (j) {
-        return function (v) {
-            return Control_Bind.bind(Data_Maybe.bindMaybe)(j)(cursorSet(v.value0)(primToJson(v.value1)));
-        };
-    };
-    return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(Data_Functor.map(Data_Maybe.functorMaybe)(function ($158) {
-        return inferEmpty(Data_Tuple.fst($158));
-    })(Data_List.head(lst)))(lst);
-};
-var cursorGet = function (v) {
-    if (v instanceof JCursorTop) {
-        return Data_Maybe.Just.create;
-    };
-    if (v instanceof JField) {
-        return Data_Argonaut_Core.foldJsonObject(Data_Maybe.Nothing.value)(Control_Bind.composeKleisliFlipped(Data_Maybe.bindMaybe)(cursorGet(v.value1))(Data_StrMap.lookup(v.value0)));
-    };
-    if (v instanceof JIndex) {
-        return Data_Argonaut_Core.foldJsonArray(Data_Maybe.Nothing.value)(Control_Bind.composeKleisliFlipped(Data_Maybe.bindMaybe)(cursorGet(v.value1))(function (v1) {
-            return Data_Array.index(v1)(v.value0);
-        }));
-    };
-    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 93, column 1 - line 93, column 28: " + [ v.constructor.name ]);
-};
-module.exports = {
-    JCursorTop: JCursorTop, 
-    JField: JField, 
-    JIndex: JIndex, 
-    JsonPrim: JsonPrim, 
-    cursorGet: cursorGet, 
-    cursorSet: cursorSet, 
-    downField: downField, 
-    downIndex: downIndex, 
-    fail: fail, 
-    fromPrims: fromPrims, 
-    inferEmpty: inferEmpty, 
-    insideOut: insideOut, 
-    primBool: primBool, 
-    primNull: primNull, 
-    primNum: primNum, 
-    primStr: primStr, 
-    primToJson: primToJson, 
-    print: print, 
-    runJsonPrim: runJsonPrim, 
-    toPrims: toPrims, 
-    eqJCursor: eqJCursor, 
-    ordJCursor: ordJCursor, 
-    showJCursor: showJCursor, 
-    semigroupJCursor: semigroupJCursor, 
-    monoidJCursor: monoidJCursor, 
-    encodeJsonJCursor: encodeJsonJCursor, 
-    showJsonPrim: showJsonPrim, 
-    decodeJsonJCursor: decodeJsonJCursor
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Semigroupoid":92,"../Data.Argonaut.Core":102,"../Data.Argonaut.Decode":105,"../Data.Argonaut.Decode.Class":103,"../Data.Argonaut.Encode":108,"../Data.Argonaut.Encode.Class":106,"../Data.Array":119,"../Data.Either":136,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Int":165,"../Data.List":194,"../Data.List.Types":193,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.StrMap":237,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Prelude":268}],110:[function(require,module,exports){
-"use strict";
-
-exports._jsonParser = function (fail, succ, s) {
-  try {
-    return succ(JSON.parse(s));
-  }
-  catch (e) {
-    return fail(e.message);
-  }
-};
-
-},{}],111:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Either = require("../Data.Either");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var jsonParser = function (j) {
-    return $foreign._jsonParser(Data_Either.Left.create, Data_Either.Right.create, j);
-};
-module.exports = {
-    jsonParser: jsonParser
-};
-
-},{"../Data.Argonaut.Core":102,"../Data.Either":136,"../Data.Function.Uncurried":148,"./foreign":110}],112:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Lens = require("../Data.Lens");
-var Data_Lens_Prism = require("../Data.Lens.Prism");
-var _String = function (dictChoice) {
-    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromString)(Data_Argonaut_Core.toString)(dictChoice);
-};
-var _Object = function (dictChoice) {
-    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromObject)(Data_Argonaut_Core.toObject)(dictChoice);
-};
-var _Number = function (dictChoice) {
-    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromNumber)(Data_Argonaut_Core.toNumber)(dictChoice);
-};
-var _Null = function (dictChoice) {
-    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromNull)(Data_Argonaut_Core.toNull)(dictChoice);
-};
-var _Boolean = function (dictChoice) {
-    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromBoolean)(Data_Argonaut_Core.toBoolean)(dictChoice);
-};
-var _Array = function (dictChoice) {
-    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromArray)(Data_Argonaut_Core.toArray)(dictChoice);
-};
-module.exports = {
-    _Array: _Array, 
-    _Boolean: _Boolean, 
-    _Null: _Null, 
-    _Number: _Number, 
-    _Object: _Object, 
-    _String: _String
-};
-
-},{"../Data.Argonaut.Core":102,"../Data.Lens":191,"../Data.Lens.Prism":187}],113:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Lens = require("../Data.Lens");
-var Data_Lens_Fold = require("../Data.Lens.Fold");
-var Prelude = require("../Prelude");
-var _JsonString = function (dictWander) {
-    return function ($6) {
-        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isString)($6));
-    };
-};
-var _JsonObject = function (dictWander) {
-    return function ($7) {
-        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isObject)($7));
-    };
-};
-var _JsonNumber = function (dictWander) {
-    return function ($8) {
-        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isNumber)($8));
-    };
-};
-var _JsonNull = function (dictWander) {
-    return function ($9) {
-        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isNull)($9));
-    };
-};
-var _JsonBoolean = function (dictWander) {
-    return function ($10) {
-        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isBoolean)($10));
-    };
-};
-var _JsonArray = function (dictWander) {
-    return function ($11) {
-        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isArray)($11));
-    };
-};
-module.exports = {
-    _JsonArray: _JsonArray, 
-    _JsonBoolean: _JsonBoolean, 
-    _JsonNull: _JsonNull, 
-    _JsonNumber: _JsonNumber, 
-    _JsonObject: _JsonObject, 
-    _JsonString: _JsonString
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Argonaut.Core":102,"../Data.Lens":191,"../Data.Lens.Fold":167,"../Prelude":268}],114:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
-var Data_Argonaut_Encode = require("../Data.Argonaut.Encode");
-var Data_Argonaut_JCursor = require("../Data.Argonaut.JCursor");
-var Data_Argonaut_Parser = require("../Data.Argonaut.Parser");
-var Data_Argonaut_Prisms = require("../Data.Argonaut.Prisms");
-var Data_Argonaut_Traversals = require("../Data.Argonaut.Traversals");
-module.exports = {};
-
-},{"../Data.Argonaut.Core":102,"../Data.Argonaut.Decode":105,"../Data.Argonaut.Encode":108,"../Data.Argonaut.JCursor":109,"../Data.Argonaut.Parser":111,"../Data.Argonaut.Prisms":112,"../Data.Argonaut.Traversals":113}],115:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_ST = require("../Control.Monad.ST");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Array_ST = require("../Data.Array.ST");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Semiring = require("../Data.Semiring");
-var Prelude = require("../Prelude");
-var Iterator = (function () {
-    function Iterator(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    Iterator.create = function (value0) {
-        return function (value1) {
-            return new Iterator(value0, value1);
-        };
-    };
-    return Iterator;
-})();
-var peek = function (v) {
-    return function __do() {
-        var v1 = Control_Monad_ST.readSTRef(v.value1)();
-        return v.value0(v1);
-    };
-};
-var next = function (v) {
-    return function __do() {
-        var v1 = Control_Monad_ST.readSTRef(v.value1)();
-        var v2 = Control_Monad_ST.modifySTRef(v.value1)(function (v2) {
-            return v2 + 1 | 0;
-        })();
-        return v.value0(v1);
-    };
-};
-var pushWhile = function (p) {
-    return function (iter) {
-        return function (array) {
-            return function __do() {
-                var v = Control_Monad_ST.newSTRef(false)();
-                while (Data_Functor.map(Control_Monad_Eff.functorEff)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraBoolean))(Control_Monad_ST.readSTRef(v))()) {
-                    (function __do() {
-                        var v1 = peek(iter)();
-                        if (v1 instanceof Data_Maybe.Just && p(v1.value0)) {
-                            var v2 = Data_Array_ST.pushSTArray(array)(v1.value0)();
-                            return Data_Functor["void"](Control_Monad_Eff.functorEff)(next(iter))();
-                        };
-                        return Data_Functor["void"](Control_Monad_Eff.functorEff)(Control_Monad_ST.writeSTRef(v)(true))();
-                    })();
-                };
-                return {};
-            };
-        };
-    };
-};
-var pushAll = pushWhile(Data_Function["const"](true));
-var iterator = function (f) {
-    return Data_Functor.map(Control_Monad_Eff.functorEff)(Iterator.create(f))(Control_Monad_ST.newSTRef(0));
-};
-var iterate = function (iter) {
-    return function (f) {
-        return function __do() {
-            var v = Control_Monad_ST.newSTRef(false)();
-            while (Data_Functor.map(Control_Monad_Eff.functorEff)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraBoolean))(Control_Monad_ST.readSTRef(v))()) {
-                (function __do() {
-                    var v1 = next(iter)();
-                    if (v1 instanceof Data_Maybe.Just) {
-                        return f(v1.value0)();
-                    };
-                    if (v1 instanceof Data_Maybe.Nothing) {
-                        return Data_Functor["void"](Control_Monad_Eff.functorEff)(Control_Monad_ST.writeSTRef(v)(true))();
-                    };
-                    throw new Error("Failed pattern match at Data.Array.ST.Iterator line 39, column 5 - line 41, column 46: " + [ v1.constructor.name ]);
-                })();
-            };
-            return {};
-        };
-    };
-};
-var exhausted = function ($27) {
-    return Data_Functor.map(Control_Monad_Eff.functorEff)(Data_Maybe.isNothing)(peek($27));
-};
-module.exports = {
-    exhausted: exhausted, 
-    iterate: iterate, 
-    iterator: iterator, 
-    next: next, 
-    peek: peek, 
-    pushAll: pushAll, 
-    pushWhile: pushWhile
-};
-
-},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Eff":70,"../Control.Monad.ST":79,"../Control.Semigroupoid":92,"../Data.Array.ST":117,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Semiring":231,"../Prelude":268}],116:[function(require,module,exports){
-"use strict";
-
-exports.runSTArray = function (f) {
-  return f;
-};
-
-exports.emptySTArray = function () {
-  return [];
-};
-
-exports.peekSTArrayImpl = function (just) {
-  return function (nothing) {
-    return function (xs) {
-      return function (i) {
-        return function () {
-          return i >= 0 && i < xs.length ? just(xs[i]) : nothing;
-        };
-      };
-    };
-  };
-};
-
-exports.pokeSTArray = function (xs) {
-  return function (i) {
-    return function (a) {
-      return function () {
-        var ret = i >= 0 && i < xs.length;
-        if (ret) xs[i] = a;
-        return ret;
-      };
-    };
-  };
-};
-
-exports.pushAllSTArray = function (xs) {
-  return function (as) {
-    return function () {
-      return xs.push.apply(xs, as);
-    };
-  };
-};
-
-exports.spliceSTArray = function (xs) {
-  return function (i) {
-    return function (howMany) {
-      return function (bs) {
-        return function () {
-          return xs.splice.apply(xs, [i, howMany].concat(bs));
-        };
-      };
-    };
-  };
-};
-
-exports.copyImpl = function (xs) {
-  return function () {
-    return xs.slice();
-  };
-};
-
-exports.toAssocArray = function (xs) {
-  return function () {
-    var n = xs.length;
-    var as = new Array(n);
-    for (var i = 0; i < n; i++) as[i] = { value: xs[i], index: i };
-    return as;
-  };
-};
-
-},{}],117:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_ST = require("../Control.Monad.ST");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Maybe = require("../Data.Maybe");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var unsafeFreeze = function ($0) {
-    return Control_Applicative.pure(Control_Monad_Eff.applicativeEff)(Unsafe_Coerce.unsafeCoerce($0));
-};
-var thaw = $foreign.copyImpl;
-var pushSTArray = function (arr) {
-    return function (a) {
-        return $foreign.pushAllSTArray(arr)([ a ]);
-    };
-};
-var peekSTArray = $foreign.peekSTArrayImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var freeze = $foreign.copyImpl;
-module.exports = {
-    freeze: freeze, 
-    peekSTArray: peekSTArray, 
-    pushSTArray: pushSTArray, 
-    thaw: thaw, 
-    unsafeFreeze: unsafeFreeze, 
-    emptySTArray: $foreign.emptySTArray, 
-    pokeSTArray: $foreign.pokeSTArray, 
-    pushAllSTArray: $foreign.pushAllSTArray, 
-    runSTArray: $foreign.runSTArray, 
-    spliceSTArray: $foreign.spliceSTArray, 
-    toAssocArray: $foreign.toAssocArray
-};
-
-},{"../Control.Applicative":40,"../Control.Monad.Eff":70,"../Control.Monad.ST":79,"../Control.Semigroupoid":92,"../Data.Maybe":198,"../Prelude":268,"../Unsafe.Coerce":271,"./foreign":116}],118:[function(require,module,exports){
-"use strict";
-
-//------------------------------------------------------------------------------
-// Array creation --------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.range = function (start) {
-  return function (end) {
-    var step = start > end ? -1 : 1;
-    var result = [];
-    var i = start, n = 0;
-    while (i !== end) {
-      result[n++] = i;
-      i += step;
-    }
-    result[n] = i;
-    return result;
-  };
-};
-
-var replicate = function (count) {
-  return function (value) {
-    if (count < 1) {
-      return [];
-    }
-    var result = new Array(count);
-    return result.fill(value);
-  };
-};
-
-var replicatePolyfill = function (count) {
-  return function (value) {
-    var result = [];
-    var n = 0;
-    for (var i = 0; i < count; i++) {
-      result[n++] = value;
-    }
-    return result;
-  };
-};
-
-// In browsers that have Array.prototype.fill we use it, as it's faster.
-exports.replicate = typeof Array.prototype.fill === "function" ?
-    replicate :
-    replicatePolyfill;
-
-exports.fromFoldableImpl = (function () {
-  // jshint maxparams: 2
-  function Cons(head, tail) {
-    this.head = head;
-    this.tail = tail;
-  }
-  var emptyList = {};
-
-  function curryCons(head) {
-    return function (tail) {
-      return new Cons(head, tail);
-    };
-  }
-
-  function listToArray(list) {
-    var result = [];
-    var count = 0;
-    var xs = list;
-    while (xs !== emptyList) {
-      result[count++] = xs.head;
-      xs = xs.tail;
-    }
-    return result;
-  }
-
-  return function (foldr) {
-    return function (xs) {
-      return listToArray(foldr(curryCons)(emptyList)(xs));
-    };
-  };
-})();
-
-//------------------------------------------------------------------------------
-// Array size ------------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.length = function (xs) {
-  return xs.length;
-};
-
-//------------------------------------------------------------------------------
-// Extending arrays ------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.cons = function (e) {
-  return function (l) {
-    return [e].concat(l);
-  };
-};
-
-exports.snoc = function (l) {
-  return function (e) {
-    var l1 = l.slice();
-    l1.push(e);
-    return l1;
-  };
-};
-
-//------------------------------------------------------------------------------
-// Non-indexed reads -----------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports["uncons'"] = function (empty) {
-  return function (next) {
-    return function (xs) {
-      return xs.length === 0 ? empty({}) : next(xs[0])(xs.slice(1));
-    };
-  };
-};
-
-//------------------------------------------------------------------------------
-// Indexed operations ----------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.indexImpl = function (just) {
-  return function (nothing) {
-    return function (xs) {
-      return function (i) {
-        return i < 0 || i >= xs.length ? nothing :  just(xs[i]);
-      };
-    };
-  };
-};
-
-exports.findIndexImpl = function (just) {
-  return function (nothing) {
-    return function (f) {
-      return function (xs) {
-        for (var i = 0, l = xs.length; i < l; i++) {
-          if (f(xs[i])) return just(i);
-        }
-        return nothing;
-      };
-    };
-  };
-};
-
-exports.findLastIndexImpl = function (just) {
-  return function (nothing) {
-    return function (f) {
-      return function (xs) {
-        for (var i = xs.length - 1; i >= 0; i--) {
-          if (f(xs[i])) return just(i);
-        }
-        return nothing;
-      };
-    };
-  };
-};
-
-exports._insertAt = function (just) {
-  return function (nothing) {
-    return function (i) {
-      return function (a) {
-        return function (l) {
-          if (i < 0 || i > l.length) return nothing;
-          var l1 = l.slice();
-          l1.splice(i, 0, a);
-          return just(l1);
-        };
-      };
-    };
-  };
-};
-
-exports._deleteAt = function (just) {
-  return function (nothing) {
-    return function (i) {
-      return function (l) {
-        if (i < 0 || i >= l.length) return nothing;
-        var l1 = l.slice();
-        l1.splice(i, 1);
-        return just(l1);
-      };
-    };
-  };
-};
-
-exports._updateAt = function (just) {
-  return function (nothing) {
-    return function (i) {
-      return function (a) {
-        return function (l) {
-          if (i < 0 || i >= l.length) return nothing;
-          var l1 = l.slice();
-          l1[i] = a;
-          return just(l1);
-        };
-      };
-    };
-  };
-};
-
-//------------------------------------------------------------------------------
-// Transformations -------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.reverse = function (l) {
-  return l.slice().reverse();
-};
-
-exports.concat = function (xss) {
-  if (xss.length <= 10000) {
-    // This method is faster, but it crashes on big arrays.
-    // So we use it when can and fallback to simple variant otherwise.
-    return Array.prototype.concat.apply([], xss);
-  }
-
-  var result = [];
-  for (var i = 0, l = xss.length; i < l; i++) {
-    var xs = xss[i];
-    for (var j = 0, m = xs.length; j < m; j++) {
-      result.push(xs[j]);
-    }
-  }
-  return result;
-};
-
-exports.filter = function (f) {
-  return function (xs) {
-    return xs.filter(f);
-  };
-};
-
-exports.partition = function (f) {
-  return function (xs) {
-    var yes = [];
-    var no  = [];
-    for (var i = 0; i < xs.length; i++) {
-      var x = xs[i];
-      if (f(x))
-        yes.push(x);
-      else
-        no.push(x);
-    }
-    return { yes: yes, no: no };
-  };
-};
-
-//------------------------------------------------------------------------------
-// Sorting ---------------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.sortImpl = function (f) {
-  return function (l) {
-    // jshint maxparams: 2
-    return l.slice().sort(function (x, y) {
-      return f(x)(y);
-    });
-  };
-};
-
-//------------------------------------------------------------------------------
-// Subarrays -------------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.slice = function (s) {
-  return function (e) {
-    return function (l) {
-      return l.slice(s, e);
-    };
-  };
-};
-
-exports.take = function (n) {
-  return function (l) {
-    return n < 1 ? [] : l.slice(0, n);
-  };
-};
-
-exports.drop = function (n) {
-  return function (l) {
-    return n < 1 ? l : l.slice(n);
-  };
-};
-
-//------------------------------------------------------------------------------
-// Zipping ---------------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.zipWith = function (f) {
-  return function (xs) {
-    return function (ys) {
-      var l = xs.length < ys.length ? xs.length : ys.length;
-      var result = new Array(l);
-      for (var i = 0; i < l; i++) {
-        result[i] = f(xs[i])(ys[i]);
-      }
-      return result;
-    };
-  };
-};
-
-//------------------------------------------------------------------------------
-// Partial ---------------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.unsafeIndexImpl = function (xs) {
-  return function (n) {
-    return xs[n];
-  };
-};
-
-},{}],119:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Lazy = require("../Control.Lazy");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_Monad_ST = require("../Control.Monad.ST");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Array_ST = require("../Data.Array.ST");
-var Data_Array_ST_Iterator = require("../Data.Array.ST.Iterator");
-var Data_Boolean = require("../Data.Boolean");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_NonEmpty = require("../Data.NonEmpty");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Partial_Unsafe = require("../Partial.Unsafe");
-var Prelude = require("../Prelude");
-var zipWithA = function (dictApplicative) {
-    return function (f) {
-        return function (xs) {
-            return function (ys) {
-                return Data_Traversable.sequence(Data_Traversable.traversableArray)(dictApplicative)($foreign.zipWith(f)(xs)(ys));
-            };
-        };
-    };
-};
-var zip = $foreign.zipWith(Data_Tuple.Tuple.create);
-var updateAt = $foreign._updateAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var unzip = $foreign["uncons'"](function (v) {
-    return new Data_Tuple.Tuple([  ], [  ]);
-})(function (v) {
-    return function (ts) {
-        var v1 = unzip(ts);
-        return new Data_Tuple.Tuple($foreign.cons(v.value0)(v1.value0), $foreign.cons(v.value1)(v1.value1));
-    };
-});
-var unsafeIndex = function (dictPartial) {
-    return $foreign.unsafeIndexImpl;
-};
-var uncons = $foreign["uncons'"](Data_Function["const"](Data_Maybe.Nothing.value))(function (x) {
-    return function (xs) {
-        return new Data_Maybe.Just({
-            head: x, 
-            tail: xs
-        });
-    };
-});
-var toUnfoldable = function (dictUnfoldable) {
-    return function (xs) {
-        var len = $foreign.length(xs);
-        var f = function (i) {
-            if (i < len) {
-                return new Data_Maybe.Just(new Data_Tuple.Tuple(unsafeIndex()(xs)(i), i + 1 | 0));
-            };
-            if (Data_Boolean.otherwise) {
-                return Data_Maybe.Nothing.value;
-            };
-            throw new Error("Failed pattern match at Data.Array line 132, column 19 - line 137, column 26: " + [ i.constructor.name ]);
-        };
-        return Data_Unfoldable.unfoldr(dictUnfoldable)(f)(0);
-    };
-};
-var tail = $foreign["uncons'"](Data_Function["const"](Data_Maybe.Nothing.value))(function (v) {
-    return function (xs) {
-        return new Data_Maybe.Just(xs);
-    };
-});
-var sortBy = function (comp) {
-    return function (xs) {
-        var comp$prime = function (x) {
-            return function (y) {
-                var v = comp(x)(y);
-                if (v instanceof Data_Ordering.GT) {
-                    return 1;
-                };
-                if (v instanceof Data_Ordering.EQ) {
-                    return 0;
-                };
-                if (v instanceof Data_Ordering.LT) {
-                    return -1 | 0;
-                };
-                throw new Error("Failed pattern match at Data.Array line 462, column 15 - line 467, column 1: " + [ v.constructor.name ]);
-            };
-        };
-        return $foreign.sortImpl(comp$prime)(xs);
-    };
-};
-var sortWith = function (dictOrd) {
-    return function (f) {
-        return sortBy(Data_Ord.comparing(dictOrd)(f));
-    };
-};
-var sort = function (dictOrd) {
-    return function (xs) {
-        return sortBy(Data_Ord.compare(dictOrd))(xs);
-    };
-};
-var singleton = function (a) {
-    return [ a ];
-};
-var $$null = function (xs) {
-    return $foreign.length(xs) === 0;
-};
-var nubBy = function (eq) {
-    return function (xs) {
-        var v = uncons(xs);
-        if (v instanceof Data_Maybe.Just) {
-            return $foreign.cons(v.value0.head)(nubBy(eq)($foreign.filter(function (y) {
-                return !eq(v.value0.head)(y);
-            })(v.value0.tail)));
-        };
-        if (v instanceof Data_Maybe.Nothing) {
-            return [  ];
-        };
-        throw new Error("Failed pattern match at Data.Array line 570, column 3 - line 572, column 18: " + [ v.constructor.name ]);
-    };
-};
-var nub = function (dictEq) {
-    return nubBy(Data_Eq.eq(dictEq));
-};
-var mapWithIndex = function (f) {
-    return function (xs) {
-        return $foreign.zipWith(f)($foreign.range(0)($foreign.length(xs) - 1 | 0))(xs);
-    };
-};
-var some = function (dictAlternative) {
-    return function (dictLazy) {
-        return function (v) {
-            return Control_Apply.apply((dictAlternative.Applicative0()).Apply0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())($foreign.cons)(v))(Control_Lazy.defer(dictLazy)(function (v1) {
-                return many(dictAlternative)(dictLazy)(v);
-            }));
-        };
-    };
-};
-var many = function (dictAlternative) {
-    return function (dictLazy) {
-        return function (v) {
-            return Control_Alt.alt((dictAlternative.Plus1()).Alt0())(some(dictAlternative)(dictLazy)(v))(Control_Applicative.pure(dictAlternative.Applicative0())([  ]));
-        };
-    };
-};
-var insertAt = $foreign._insertAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var init = function (xs) {
-    if ($$null(xs)) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (Data_Boolean.otherwise) {
-        return new Data_Maybe.Just($foreign.slice(0)($foreign.length(xs) - 1 | 0)(xs));
-    };
-    throw new Error("Failed pattern match at Data.Array line 248, column 1 - line 250, column 55: " + [ xs.constructor.name ]);
-};
-var index = $foreign.indexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var last = function (xs) {
-    return index(xs)($foreign.length(xs) - 1 | 0);
-};
-var unsnoc = function (xs) {
-    return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
-        return function (v1) {
-            return {
-                init: v, 
-                last: v1
-            };
-        };
-    })(init(xs)))(last(xs));
-};
-var modifyAt = function (i) {
-    return function (f) {
-        return function (xs) {
-            var go = function (x) {
-                return updateAt(i)(f(x))(xs);
-            };
-            return Data_Maybe.maybe(Data_Maybe.Nothing.value)(go)(index(xs)(i));
-        };
-    };
-};
-var span = function (p) {
-    return function (arr) {
-        var go = function (__copy_i) {
-            var i = __copy_i;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_i;
-            function __tco_loop(i) {
-                var v = index(arr)(i);
-                if (v instanceof Data_Maybe.Just) {
-                    var $64 = p(v.value0);
-                    if ($64) {
-                        __tco_i = i + 1 | 0;
-                        return;
-                    };
-                    __tco_done = true;
-                    return new Data_Maybe.Just(i);
-                };
-                if (v instanceof Data_Maybe.Nothing) {
-                    __tco_done = true;
-                    return Data_Maybe.Nothing.value;
-                };
-                throw new Error("Failed pattern match at Data.Array line 528, column 5 - line 530, column 25: " + [ v.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(i);
-                i = __tco_i;
-            };
-            return __tco_result;
-        };
-        var breakIndex = go(0);
-        if (breakIndex instanceof Data_Maybe.Just && breakIndex.value0 === 0) {
-            return {
-                init: [  ], 
-                rest: arr
-            };
-        };
-        if (breakIndex instanceof Data_Maybe.Just) {
-            return {
-                init: $foreign.slice(0)(breakIndex.value0)(arr), 
-                rest: $foreign.slice(breakIndex.value0)($foreign.length(arr))(arr)
-            };
-        };
-        if (breakIndex instanceof Data_Maybe.Nothing) {
-            return {
-                init: arr, 
-                rest: [  ]
-            };
-        };
-        throw new Error("Failed pattern match at Data.Array line 515, column 3 - line 521, column 30: " + [ breakIndex.constructor.name ]);
-    };
-};
-var takeWhile = function (p) {
-    return function (xs) {
-        return (span(p)(xs)).init;
-    };
-};
-var head = function (xs) {
-    return index(xs)(0);
-};
-var groupBy = function (op) {
-    return function (xs) {
-        return Control_Monad_ST.pureST(function __do() {
-            var v = Data_Array_ST.emptySTArray();
-            var v1 = Data_Array_ST_Iterator.iterator(function (v1) {
-                return index(xs)(v1);
-            })();
-            Data_Array_ST_Iterator.iterate(v1)(function (x) {
-                return Data_Functor["void"](Control_Monad_Eff.functorEff)(function __do() {
-                    var v2 = Data_Array_ST.emptySTArray();
-                    Data_Array_ST_Iterator.pushWhile(op(x))(v1)(v2)();
-                    var v3 = Data_Array_ST.unsafeFreeze(v2)();
-                    return Data_Array_ST.pushSTArray(v)(new Data_NonEmpty.NonEmpty(x, v3))();
-                });
-            })();
-            return Data_Array_ST.unsafeFreeze(v)();
-        });
-    };
-};
-var group = function (dictEq) {
-    return function (xs) {
-        return groupBy(Data_Eq.eq(dictEq))(xs);
-    };
-};
-var group$prime = function (dictOrd) {
-    return function ($85) {
-        return group(dictOrd.Eq0())(sort(dictOrd)($85));
-    };
-};
-var fromFoldable = function (dictFoldable) {
-    return $foreign.fromFoldableImpl(Data_Foldable.foldr(dictFoldable));
-};
-var foldRecM = function (dictMonadRec) {
-    return function (f) {
-        return function (a) {
-            return function (array) {
-                var go = function (res) {
-                    return function (i) {
-                        if (i >= $foreign.length(array)) {
-                            return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(res));
-                        };
-                        if (Data_Boolean.otherwise) {
-                            return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(f(res)(unsafeIndex()(array)(i)))(function (v) {
-                                return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop({
-                                    a: v, 
-                                    b: i + 1 | 0
-                                }));
-                            });
-                        };
-                        throw new Error("Failed pattern match at Data.Array line 671, column 3 - line 675, column 42: " + [ res.constructor.name, i.constructor.name ]);
-                    };
-                };
-                return Control_Monad_Rec_Class.tailRecM2(dictMonadRec)(go)(a)(0);
-            };
-        };
-    };
-};
-var foldM = function (dictMonad) {
-    return function (f) {
-        return function (a) {
-            return $foreign["uncons'"](function (v) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(a);
-            })(function (b) {
-                return function (bs) {
-                    return Control_Bind.bind(dictMonad.Bind1())(f(a)(b))(function (a$prime) {
-                        return foldM(dictMonad)(f)(a$prime)(bs);
-                    });
-                };
-            });
-        };
-    };
-};
-var findLastIndex = $foreign.findLastIndexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var insertBy = function (cmp) {
-    return function (x) {
-        return function (ys) {
-            var i = Data_Maybe.maybe(0)(function (v) {
-                return v + 1 | 0;
-            })(findLastIndex(function (y) {
-                return Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(x)(y))(Data_Ordering.GT.value);
-            })(ys));
-            return Data_Maybe.fromJust()(insertAt(i)(x)(ys));
-        };
-    };
-};
-var insert = function (dictOrd) {
-    return insertBy(Data_Ord.compare(dictOrd));
-};
-var findIndex = $foreign.findIndexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var intersectBy = function (eq) {
-    return function (xs) {
-        return function (ys) {
-            return $foreign.filter(function (x) {
-                return Data_Maybe.isJust(findIndex(eq(x))(ys));
-            })(xs);
-        };
-    };
-};
-var intersect = function (dictEq) {
-    return intersectBy(Data_Eq.eq(dictEq));
-};
-var elemLastIndex = function (dictEq) {
-    return function (x) {
-        return findLastIndex(function (v) {
-            return Data_Eq.eq(dictEq)(v)(x);
-        });
-    };
-};
-var elemIndex = function (dictEq) {
-    return function (x) {
-        return findIndex(function (v) {
-            return Data_Eq.eq(dictEq)(v)(x);
-        });
-    };
-};
-var dropWhile = function (p) {
-    return function (xs) {
-        return (span(p)(xs)).rest;
-    };
-};
-var deleteAt = $foreign._deleteAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var deleteBy = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v2.length === 0) {
-                return [  ];
-            };
-            return Data_Maybe.maybe(v2)(function (i) {
-                return Data_Maybe.fromJust()(deleteAt(i)(v2));
-            })(findIndex(v(v1))(v2));
-        };
-    };
-};
-var unionBy = function (eq) {
-    return function (xs) {
-        return function (ys) {
-            return Data_Semigroup.append(Data_Semigroup.semigroupArray)(xs)(Data_Foldable.foldl(Data_Foldable.foldableArray)(Data_Function.flip(deleteBy(eq)))(nubBy(eq)(ys))(xs));
-        };
-    };
-};
-var union = function (dictEq) {
-    return unionBy(Data_Eq.eq(dictEq));
-};
-var $$delete = function (dictEq) {
-    return deleteBy(Data_Eq.eq(dictEq));
-};
-var difference = function (dictEq) {
-    return Data_Foldable.foldr(Data_Foldable.foldableArray)($$delete(dictEq));
-};
-var concatMap = Data_Function.flip(Control_Bind.bind(Control_Bind.bindArray));
-var mapMaybe = function (f) {
-    return concatMap(function ($86) {
-        return Data_Maybe.maybe([  ])(singleton)(f($86));
-    });
-};
-var filterA = function (dictApplicative) {
-    return function (p) {
-        return function ($87) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(mapMaybe(function (v) {
-                if (v.value1) {
-                    return new Data_Maybe.Just(v.value0);
-                };
-                return Data_Maybe.Nothing.value;
-            }))(Data_Traversable.traverse(Data_Traversable.traversableArray)(dictApplicative)(function (x) {
-                return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Tuple.Tuple.create(x))(p(x));
-            })($87));
-        };
-    };
-};
-var catMaybes = mapMaybe(Control_Category.id(Control_Category.categoryFn));
-var alterAt = function (i) {
-    return function (f) {
-        return function (xs) {
-            var go = function (x) {
-                var v = f(x);
-                if (v instanceof Data_Maybe.Nothing) {
-                    return deleteAt(i)(xs);
-                };
-                if (v instanceof Data_Maybe.Just) {
-                    return updateAt(i)(v.value0)(xs);
-                };
-                throw new Error("Failed pattern match at Data.Array line 388, column 10 - line 390, column 32: " + [ v.constructor.name ]);
-            };
-            return Data_Maybe.maybe(Data_Maybe.Nothing.value)(go)(index(xs)(i));
-        };
-    };
-};
-module.exports = {
-    alterAt: alterAt, 
-    catMaybes: catMaybes, 
-    concatMap: concatMap, 
-    "delete": $$delete, 
-    deleteAt: deleteAt, 
-    deleteBy: deleteBy, 
-    difference: difference, 
-    dropWhile: dropWhile, 
-    elemIndex: elemIndex, 
-    elemLastIndex: elemLastIndex, 
-    filterA: filterA, 
-    findIndex: findIndex, 
-    findLastIndex: findLastIndex, 
-    foldM: foldM, 
-    foldRecM: foldRecM, 
-    fromFoldable: fromFoldable, 
-    group: group, 
-    "group'": group$prime, 
-    groupBy: groupBy, 
-    head: head, 
-    index: index, 
-    init: init, 
-    insert: insert, 
-    insertAt: insertAt, 
-    insertBy: insertBy, 
-    intersect: intersect, 
-    intersectBy: intersectBy, 
-    last: last, 
-    many: many, 
-    mapMaybe: mapMaybe, 
-    mapWithIndex: mapWithIndex, 
-    modifyAt: modifyAt, 
-    nub: nub, 
-    nubBy: nubBy, 
-    "null": $$null, 
-    singleton: singleton, 
-    some: some, 
-    sort: sort, 
-    sortBy: sortBy, 
-    sortWith: sortWith, 
-    span: span, 
-    tail: tail, 
-    takeWhile: takeWhile, 
-    toUnfoldable: toUnfoldable, 
-    uncons: uncons, 
-    union: union, 
-    unionBy: unionBy, 
-    unsafeIndex: unsafeIndex, 
-    unsnoc: unsnoc, 
-    unzip: unzip, 
-    updateAt: updateAt, 
-    zip: zip, 
-    zipWithA: zipWithA, 
-    concat: $foreign.concat, 
-    cons: $foreign.cons, 
-    drop: $foreign.drop, 
-    filter: $foreign.filter, 
-    length: $foreign.length, 
-    partition: $foreign.partition, 
-    range: $foreign.range, 
-    replicate: $foreign.replicate, 
-    reverse: $foreign.reverse, 
-    slice: $foreign.slice, 
-    snoc: $foreign.snoc, 
-    take: $foreign.take, 
-    zipWith: $foreign.zipWith
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Lazy":50,"../Control.Monad.Eff":70,"../Control.Monad.Rec.Class":77,"../Control.Monad.ST":79,"../Control.Semigroupoid":92,"../Data.Array.ST":117,"../Data.Array.ST.Iterator":115,"../Data.Boolean":129,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.NonEmpty":210,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Partial.Unsafe":265,"../Prelude":268,"./foreign":118}],120:[function(require,module,exports){
-arguments[4][99][0].apply(exports,arguments)
-},{"dup":99}],121:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Bifunctor_Clown = require("../Data.Bifunctor.Clown");
-var Data_Bifunctor_Flip = require("../Data.Bifunctor.Flip");
-var Data_Bifunctor_Joker = require("../Data.Bifunctor.Joker");
-var Data_Bifunctor_Product = require("../Data.Bifunctor.Product");
-var Data_Bifunctor_Wrap = require("../Data.Bifunctor.Wrap");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Monoid_Conj = require("../Data.Monoid.Conj");
-var Data_Monoid_Disj = require("../Data.Monoid.Disj");
-var Data_Monoid_Dual = require("../Data.Monoid.Dual");
-var Data_Monoid_Endo = require("../Data.Monoid.Endo");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Bifoldable = function (bifoldMap, bifoldl, bifoldr) {
-    this.bifoldMap = bifoldMap;
-    this.bifoldl = bifoldl;
-    this.bifoldr = bifoldr;
-};
-var bifoldr = function (dict) {
-    return dict.bifoldr;
-};
-var bitraverse_ = function (dictBifoldable) {
-    return function (dictApplicative) {
-        return function (f) {
-            return function (g) {
-                return bifoldr(dictBifoldable)(function ($97) {
-                    return Control_Apply.applySecond(dictApplicative.Apply0())(f($97));
-                })(function ($98) {
-                    return Control_Apply.applySecond(dictApplicative.Apply0())(g($98));
-                })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
-            };
-        };
-    };
-};
-var bifor_ = function (dictBifoldable) {
-    return function (dictApplicative) {
-        return function (t) {
-            return function (f) {
-                return function (g) {
-                    return bitraverse_(dictBifoldable)(dictApplicative)(f)(g)(t);
-                };
-            };
-        };
-    };
-};
-var bisequence_ = function (dictBifoldable) {
-    return function (dictApplicative) {
-        return bitraverse_(dictBifoldable)(dictApplicative)(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var bifoldl = function (dict) {
-    return dict.bifoldl;
-};
-var bifoldableJoker = function (dictFoldable) {
-    return new Bifoldable(function (dictMonoid) {
-        return function (v) {
-            return function (r) {
-                return function (v1) {
-                    return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(r)(v1);
-                };
-            };
-        };
-    }, function (v) {
-        return function (r) {
-            return function (u) {
-                return function (v1) {
-                    return Data_Foldable.foldl(dictFoldable)(r)(u)(v1);
-                };
-            };
-        };
-    }, function (v) {
-        return function (r) {
-            return function (u) {
-                return function (v1) {
-                    return Data_Foldable.foldr(dictFoldable)(r)(u)(v1);
-                };
-            };
-        };
-    });
-};
-var bifoldableClown = function (dictFoldable) {
-    return new Bifoldable(function (dictMonoid) {
-        return function (l) {
-            return function (v) {
-                return function (v1) {
-                    return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(l)(v1);
-                };
-            };
-        };
-    }, function (l) {
-        return function (v) {
-            return function (u) {
-                return function (v1) {
-                    return Data_Foldable.foldl(dictFoldable)(l)(u)(v1);
-                };
-            };
-        };
-    }, function (l) {
-        return function (v) {
-            return function (u) {
-                return function (v1) {
-                    return Data_Foldable.foldr(dictFoldable)(l)(u)(v1);
-                };
-            };
-        };
-    });
-};
-var bifoldMapDefaultR = function (dictBifoldable) {
-    return function (dictMonoid) {
-        return function (f) {
-            return function (g) {
-                return bifoldr(dictBifoldable)(function ($99) {
-                    return Data_Semigroup.append(dictMonoid.Semigroup0())(f($99));
-                })(function ($100) {
-                    return Data_Semigroup.append(dictMonoid.Semigroup0())(g($100));
-                })(Data_Monoid.mempty(dictMonoid));
-            };
-        };
-    };
-};
-var bifoldMapDefaultL = function (dictBifoldable) {
-    return function (dictMonoid) {
-        return function (f) {
-            return function (g) {
-                return bifoldl(dictBifoldable)(function (m) {
-                    return function (a) {
-                        return Data_Semigroup.append(dictMonoid.Semigroup0())(m)(f(a));
-                    };
-                })(function (m) {
-                    return function (b) {
-                        return Data_Semigroup.append(dictMonoid.Semigroup0())(m)(g(b));
-                    };
-                })(Data_Monoid.mempty(dictMonoid));
-            };
-        };
-    };
-};
-var bifoldMap = function (dict) {
-    return dict.bifoldMap;
-};
-var bifoldableFlip = function (dictBifoldable) {
-    return new Bifoldable(function (dictMonoid) {
-        return function (r) {
-            return function (l) {
-                return function (v) {
-                    return bifoldMap(dictBifoldable)(dictMonoid)(l)(r)(v);
-                };
-            };
-        };
-    }, function (r) {
-        return function (l) {
-            return function (u) {
-                return function (v) {
-                    return bifoldl(dictBifoldable)(l)(r)(u)(v);
-                };
-            };
-        };
-    }, function (r) {
-        return function (l) {
-            return function (u) {
-                return function (v) {
-                    return bifoldr(dictBifoldable)(l)(r)(u)(v);
-                };
-            };
-        };
-    });
-};
-var bifoldableWrap = function (dictBifoldable) {
-    return new Bifoldable(function (dictMonoid) {
-        return function (l) {
-            return function (r) {
-                return function (v) {
-                    return bifoldMap(dictBifoldable)(dictMonoid)(l)(r)(v);
-                };
-            };
-        };
-    }, function (l) {
-        return function (r) {
-            return function (u) {
-                return function (v) {
-                    return bifoldl(dictBifoldable)(l)(r)(u)(v);
-                };
-            };
-        };
-    }, function (l) {
-        return function (r) {
-            return function (u) {
-                return function (v) {
-                    return bifoldr(dictBifoldable)(l)(r)(u)(v);
-                };
-            };
-        };
-    });
-};
-var bifoldlDefault = function (dictBifoldable) {
-    return function (f) {
-        return function (g) {
-            return function (z) {
-                return function (p) {
-                    return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(bifoldMap(dictBifoldable)(Data_Monoid_Dual.monoidDual(Data_Monoid_Endo.monoidEndo))(function ($101) {
-                        return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(f)($101)));
-                    })(function ($102) {
-                        return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(g)($102)));
-                    })(p)))(z);
-                };
-            };
-        };
-    };
-};
-var bifoldrDefault = function (dictBifoldable) {
-    return function (f) {
-        return function (g) {
-            return function (z) {
-                return function (p) {
-                    return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(bifoldMap(dictBifoldable)(Data_Monoid_Endo.monoidEndo)(function ($103) {
-                        return Data_Monoid_Endo.Endo(f($103));
-                    })(function ($104) {
-                        return Data_Monoid_Endo.Endo(g($104));
-                    })(p))(z);
-                };
-            };
-        };
-    };
-};
-var bifoldableProduct = function (dictBifoldable) {
-    return function (dictBifoldable1) {
-        return new Bifoldable(function (dictMonoid) {
-            return function (l) {
-                return function (r) {
-                    return function (v) {
-                        return Data_Semigroup.append(dictMonoid.Semigroup0())(bifoldMap(dictBifoldable)(dictMonoid)(l)(r)(v.value0))(bifoldMap(dictBifoldable1)(dictMonoid)(l)(r)(v.value1));
-                    };
-                };
-            };
-        }, function (l) {
-            return function (r) {
-                return function (u) {
-                    return function (m) {
-                        return bifoldlDefault(bifoldableProduct(dictBifoldable)(dictBifoldable1))(l)(r)(u)(m);
-                    };
-                };
-            };
-        }, function (l) {
-            return function (r) {
-                return function (u) {
-                    return function (m) {
-                        return bifoldrDefault(bifoldableProduct(dictBifoldable)(dictBifoldable1))(l)(r)(u)(m);
-                    };
-                };
-            };
-        });
-    };
-};
-var bifold = function (dictBifoldable) {
-    return function (dictMonoid) {
-        return bifoldMap(dictBifoldable)(dictMonoid)(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var biany = function (dictBifoldable) {
-    return function (dictBooleanAlgebra) {
-        return function (p) {
-            return function (q) {
-                return function ($105) {
-                    return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(bifoldMap(dictBifoldable)(Data_Monoid_Disj.monoidDisj(dictBooleanAlgebra.HeytingAlgebra0()))(function ($106) {
-                        return Data_Monoid_Disj.Disj(p($106));
-                    })(function ($107) {
-                        return Data_Monoid_Disj.Disj(q($107));
-                    })($105));
-                };
-            };
-        };
-    };
-};
-var biall = function (dictBifoldable) {
-    return function (dictBooleanAlgebra) {
-        return function (p) {
-            return function (q) {
-                return function ($108) {
-                    return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(bifoldMap(dictBifoldable)(Data_Monoid_Conj.monoidConj(dictBooleanAlgebra.HeytingAlgebra0()))(function ($109) {
-                        return Data_Monoid_Conj.Conj(p($109));
-                    })(function ($110) {
-                        return Data_Monoid_Conj.Conj(q($110));
-                    })($108));
-                };
-            };
-        };
-    };
-};
-module.exports = {
-    Bifoldable: Bifoldable, 
-    biall: biall, 
-    biany: biany, 
-    bifold: bifold, 
-    bifoldMap: bifoldMap, 
-    bifoldMapDefaultL: bifoldMapDefaultL, 
-    bifoldMapDefaultR: bifoldMapDefaultR, 
-    bifoldl: bifoldl, 
-    bifoldlDefault: bifoldlDefault, 
-    bifoldr: bifoldr, 
-    bifoldrDefault: bifoldrDefault, 
-    bifor_: bifor_, 
-    bisequence_: bisequence_, 
-    bitraverse_: bitraverse_, 
-    bifoldableClown: bifoldableClown, 
-    bifoldableJoker: bifoldableJoker, 
-    bifoldableFlip: bifoldableFlip, 
-    bifoldableProduct: bifoldableProduct, 
-    bifoldableWrap: bifoldableWrap
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Bifunctor.Clown":122,"../Data.Bifunctor.Flip":123,"../Data.Bifunctor.Joker":124,"../Data.Bifunctor.Product":125,"../Data.Bifunctor.Wrap":126,"../Data.Foldable":143,"../Data.Function":149,"../Data.Monoid":207,"../Data.Monoid.Conj":202,"../Data.Monoid.Disj":203,"../Data.Monoid.Dual":204,"../Data.Monoid.Endo":205,"../Data.Newtype":209,"../Data.Semigroup":229,"../Data.Unit":249,"../Prelude":268}],122:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Biapplicative = require("../Control.Biapplicative");
-var Control_Biapply = require("../Control.Biapply");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Clown = function (x) {
-    return x;
-};
-var showClown = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Clown " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var ordClown = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeClown = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Clown);
-var functorClown = new Data_Functor.Functor(function (v) {
-    return function (v1) {
-        return v1;
-    };
-});
-var eqClown = function (dictEq) {
-    return dictEq;
-};
-var bifunctorClown = function (dictFunctor) {
-    return new Data_Bifunctor.Bifunctor(function (f) {
-        return function (v) {
-            return function (v1) {
-                return Data_Functor.map(dictFunctor)(f)(v1);
-            };
-        };
-    });
-};
-var biapplyClown = function (dictApply) {
-    return new Control_Biapply.Biapply(function () {
-        return bifunctorClown(dictApply.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return Control_Apply.apply(dictApply)(v)(v1);
-        };
-    });
-};
-var biapplicativeClown = function (dictApplicative) {
-    return new Control_Biapplicative.Biapplicative(function () {
-        return biapplyClown(dictApplicative.Apply0());
-    }, function (a) {
-        return function (v) {
-            return Control_Applicative.pure(dictApplicative)(a);
-        };
-    });
-};
-module.exports = {
-    Clown: Clown, 
-    newtypeClown: newtypeClown, 
-    eqClown: eqClown, 
-    ordClown: ordClown, 
-    showClown: showClown, 
-    functorClown: functorClown, 
-    bifunctorClown: bifunctorClown, 
-    biapplyClown: biapplyClown, 
-    biapplicativeClown: biapplicativeClown
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":127,"../Data.Eq":138,"../Data.Functor":155,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],123:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Biapplicative = require("../Control.Biapplicative");
-var Control_Biapply = require("../Control.Biapply");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Flip = function (x) {
-    return x;
-};
-var showFlip = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Flip " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var ordFlip = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeFlip = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Flip);
-var functorFlip = function (dictBifunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return function (v) {
-            return Data_Bifunctor.lmap(dictBifunctor)(f)(v);
-        };
-    });
-};
-var eqFlip = function (dictEq) {
-    return dictEq;
-};
-var bifunctorFlip = function (dictBifunctor) {
-    return new Data_Bifunctor.Bifunctor(function (f) {
-        return function (g) {
-            return function (v) {
-                return Data_Bifunctor.bimap(dictBifunctor)(g)(f)(v);
-            };
-        };
-    });
-};
-var biapplyFlip = function (dictBiapply) {
-    return new Control_Biapply.Biapply(function () {
-        return bifunctorFlip(dictBiapply.Bifunctor0());
-    }, function (v) {
-        return function (v1) {
-            return Control_Biapply.biapply(dictBiapply)(v)(v1);
-        };
-    });
-};
-var biapplicativeFlip = function (dictBiapplicative) {
-    return new Control_Biapplicative.Biapplicative(function () {
-        return biapplyFlip(dictBiapplicative.Biapply0());
-    }, function (a) {
-        return function (b) {
-            return Control_Biapplicative.bipure(dictBiapplicative)(b)(a);
-        };
-    });
-};
-module.exports = {
-    Flip: Flip, 
-    newtypeFlip: newtypeFlip, 
-    eqFlip: eqFlip, 
-    ordFlip: ordFlip, 
-    showFlip: showFlip, 
-    functorFlip: functorFlip, 
-    bifunctorFlip: bifunctorFlip, 
-    biapplyFlip: biapplyFlip, 
-    biapplicativeFlip: biapplicativeFlip
-};
-
-},{"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":127,"../Data.Eq":138,"../Data.Functor":155,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],124:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Biapplicative = require("../Control.Biapplicative");
-var Control_Biapply = require("../Control.Biapply");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Joker = function (x) {
-    return x;
-};
-var showJoker = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Joker " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var ordJoker = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeJoker = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Joker);
-var functorJoker = function (dictFunctor) {
-    return new Data_Functor.Functor(function (g) {
-        return function (v) {
-            return Data_Functor.map(dictFunctor)(g)(v);
-        };
-    });
-};
-var eqJoker = function (dictEq) {
-    return dictEq;
-};
-var bifunctorJoker = function (dictFunctor) {
-    return new Data_Bifunctor.Bifunctor(function (v) {
-        return function (g) {
-            return function (v1) {
-                return Data_Functor.map(dictFunctor)(g)(v1);
-            };
-        };
-    });
-};
-var biapplyJoker = function (dictApply) {
-    return new Control_Biapply.Biapply(function () {
-        return bifunctorJoker(dictApply.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return Control_Apply.apply(dictApply)(v)(v1);
-        };
-    });
-};
-var biapplicativeJoker = function (dictApplicative) {
-    return new Control_Biapplicative.Biapplicative(function () {
-        return biapplyJoker(dictApplicative.Apply0());
-    }, function (v) {
-        return function (b) {
-            return Control_Applicative.pure(dictApplicative)(b);
-        };
-    });
-};
-module.exports = {
-    Joker: Joker, 
-    newtypeJoker: newtypeJoker, 
-    eqJoker: eqJoker, 
-    ordJoker: ordJoker, 
-    showJoker: showJoker, 
-    functorJoker: functorJoker, 
-    bifunctorJoker: bifunctorJoker, 
-    biapplyJoker: biapplyJoker, 
-    biapplicativeJoker: biapplicativeJoker
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":127,"../Data.Eq":138,"../Data.Functor":155,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],125:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Biapplicative = require("../Control.Biapplicative");
-var Control_Biapply = require("../Control.Biapply");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Eq = require("../Data.Eq");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Product = (function () {
-    function Product(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    Product.create = function (value0) {
-        return function (value1) {
-            return new Product(value0, value1);
-        };
-    };
-    return Product;
-})();
-var showProduct = function (dictShow) {
-    return function (dictShow1) {
-        return new Data_Show.Show(function (v) {
-            return "(Product " + (Data_Show.show(dictShow)(v.value0) + (" " + (Data_Show.show(dictShow1)(v.value1) + ")")));
-        });
-    };
-};
-var eqProduct = function (dictEq) {
-    return function (dictEq1) {
-        return new Data_Eq.Eq(function (x) {
-            return function (y) {
-                return Data_Eq.eq(dictEq)(x.value0)(y.value0) && Data_Eq.eq(dictEq1)(x.value1)(y.value1);
-            };
-        });
-    };
-};
-var ordProduct = function (dictOrd) {
-    return function (dictOrd1) {
-        return new Data_Ord.Ord(function () {
-            return eqProduct(dictOrd.Eq0())(dictOrd1.Eq0());
-        }, function (x) {
-            return function (y) {
-                var v = Data_Ord.compare(dictOrd)(x.value0)(y.value0);
-                if (v instanceof Data_Ordering.LT) {
-                    return Data_Ordering.LT.value;
-                };
-                if (v instanceof Data_Ordering.GT) {
-                    return Data_Ordering.GT.value;
-                };
-                return Data_Ord.compare(dictOrd1)(x.value1)(y.value1);
-            };
-        });
-    };
-};
-var bifunctorProduct = function (dictBifunctor) {
-    return function (dictBifunctor1) {
-        return new Data_Bifunctor.Bifunctor(function (f) {
-            return function (g) {
-                return function (v) {
-                    return new Product(Data_Bifunctor.bimap(dictBifunctor)(f)(g)(v.value0), Data_Bifunctor.bimap(dictBifunctor1)(f)(g)(v.value1));
-                };
-            };
-        });
-    };
-};
-var biapplyProduct = function (dictBiapply) {
-    return function (dictBiapply1) {
-        return new Control_Biapply.Biapply(function () {
-            return bifunctorProduct(dictBiapply.Bifunctor0())(dictBiapply1.Bifunctor0());
-        }, function (v) {
-            return function (v1) {
-                return new Product(Control_Biapply.biapply(dictBiapply)(v.value0)(v1.value0), Control_Biapply.biapply(dictBiapply1)(v.value1)(v1.value1));
-            };
-        });
-    };
-};
-var biapplicativeProduct = function (dictBiapplicative) {
-    return function (dictBiapplicative1) {
-        return new Control_Biapplicative.Biapplicative(function () {
-            return biapplyProduct(dictBiapplicative.Biapply0())(dictBiapplicative1.Biapply0());
-        }, function (a) {
-            return function (b) {
-                return new Product(Control_Biapplicative.bipure(dictBiapplicative)(a)(b), Control_Biapplicative.bipure(dictBiapplicative1)(a)(b));
-            };
-        });
-    };
-};
-module.exports = {
-    Product: Product, 
-    eqProduct: eqProduct, 
-    ordProduct: ordProduct, 
-    showProduct: showProduct, 
-    bifunctorProduct: bifunctorProduct, 
-    biapplyProduct: biapplyProduct, 
-    biapplicativeProduct: biapplicativeProduct
-};
-
-},{"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":127,"../Data.Eq":138,"../Data.HeytingAlgebra":160,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],126:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Biapplicative = require("../Control.Biapplicative");
-var Control_Biapply = require("../Control.Biapply");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Wrap = function (x) {
-    return x;
-};
-var showWrap = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Wrap " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var ordWrap = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeWrap = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Wrap);
-var functorWrap = function (dictBifunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return function (v) {
-            return Data_Bifunctor.rmap(dictBifunctor)(f)(v);
-        };
-    });
-};
-var eqWrap = function (dictEq) {
-    return dictEq;
-};
-var bifunctorWrap = function (dictBifunctor) {
-    return new Data_Bifunctor.Bifunctor(function (f) {
-        return function (g) {
-            return function (v) {
-                return Data_Bifunctor.bimap(dictBifunctor)(f)(g)(v);
-            };
-        };
-    });
-};
-var biapplyWrap = function (dictBiapply) {
-    return new Control_Biapply.Biapply(function () {
-        return bifunctorWrap(dictBiapply.Bifunctor0());
-    }, function (v) {
-        return function (v1) {
-            return Control_Biapply.biapply(dictBiapply)(v)(v1);
-        };
-    });
-};
-var biapplicativeWrap = function (dictBiapplicative) {
-    return new Control_Biapplicative.Biapplicative(function () {
-        return biapplyWrap(dictBiapplicative.Biapply0());
-    }, function (a) {
-        return function (b) {
-            return Control_Biapplicative.bipure(dictBiapplicative)(a)(b);
-        };
-    });
-};
-module.exports = {
-    Wrap: Wrap, 
-    newtypeWrap: newtypeWrap, 
-    eqWrap: eqWrap, 
-    ordWrap: ordWrap, 
-    showWrap: showWrap, 
-    functorWrap: functorWrap, 
-    bifunctorWrap: bifunctorWrap, 
-    biapplyWrap: biapplyWrap, 
-    biapplicativeWrap: biapplicativeWrap
-};
-
-},{"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":127,"../Data.Eq":138,"../Data.Functor":155,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],127:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Bifunctor = function (bimap) {
-    this.bimap = bimap;
-};
-var bimap = function (dict) {
-    return dict.bimap;
-};
-var lmap = function (dictBifunctor) {
-    return function (f) {
-        return bimap(dictBifunctor)(f)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var rmap = function (dictBifunctor) {
-    return bimap(dictBifunctor)(Control_Category.id(Control_Category.categoryFn));
-};
-module.exports = {
-    Bifunctor: Bifunctor, 
-    bimap: bimap, 
-    lmap: lmap, 
-    rmap: rmap
-};
-
-},{"../Control.Category":47}],128:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Data_Bifoldable = require("../Data.Bifoldable");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Bifunctor_Clown = require("../Data.Bifunctor.Clown");
-var Data_Bifunctor_Flip = require("../Data.Bifunctor.Flip");
-var Data_Bifunctor_Joker = require("../Data.Bifunctor.Joker");
-var Data_Bifunctor_Product = require("../Data.Bifunctor.Product");
-var Data_Bifunctor_Wrap = require("../Data.Bifunctor.Wrap");
-var Data_Functor = require("../Data.Functor");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var Bitraversable = function (Bifoldable1, Bifunctor0, bisequence, bitraverse) {
-    this.Bifoldable1 = Bifoldable1;
-    this.Bifunctor0 = Bifunctor0;
-    this.bisequence = bisequence;
-    this.bitraverse = bitraverse;
-};
-var bitraverse = function (dict) {
-    return dict.bitraverse;
-};
-var lfor = function (dictBitraversable) {
-    return function (dictApplicative) {
-        return function (t) {
-            return function (f) {
-                return bitraverse(dictBitraversable)(dictApplicative)(f)(Control_Applicative.pure(dictApplicative))(t);
-            };
-        };
-    };
-};
-var ltraverse = function (dictBitraversable) {
-    return function (dictApplicative) {
-        return function (f) {
-            return bitraverse(dictBitraversable)(dictApplicative)(f)(Control_Applicative.pure(dictApplicative));
-        };
-    };
-};
-var rfor = function (dictBitraversable) {
-    return function (dictApplicative) {
-        return function (t) {
-            return function (f) {
-                return bitraverse(dictBitraversable)(dictApplicative)(Control_Applicative.pure(dictApplicative))(f)(t);
-            };
-        };
-    };
-};
-var rtraverse = function (dictBitraversable) {
-    return function (dictApplicative) {
-        return bitraverse(dictBitraversable)(dictApplicative)(Control_Applicative.pure(dictApplicative));
-    };
-};
-var bitraversableJoker = function (dictTraversable) {
-    return new Bitraversable(function () {
-        return Data_Bifoldable.bifoldableJoker(dictTraversable.Foldable1());
-    }, function () {
-        return Data_Bifunctor_Joker.bifunctorJoker(dictTraversable.Functor0());
-    }, function (dictApplicative) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Joker.Joker)(Data_Traversable.sequence(dictTraversable)(dictApplicative)(v));
-        };
-    }, function (dictApplicative) {
-        return function (v) {
-            return function (r) {
-                return function (v1) {
-                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Joker.Joker)(Data_Traversable.traverse(dictTraversable)(dictApplicative)(r)(v1));
-                };
-            };
-        };
-    });
-};
-var bitraversableClown = function (dictTraversable) {
-    return new Bitraversable(function () {
-        return Data_Bifoldable.bifoldableClown(dictTraversable.Foldable1());
-    }, function () {
-        return Data_Bifunctor_Clown.bifunctorClown(dictTraversable.Functor0());
-    }, function (dictApplicative) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Clown.Clown)(Data_Traversable.sequence(dictTraversable)(dictApplicative)(v));
-        };
-    }, function (dictApplicative) {
-        return function (l) {
-            return function (v) {
-                return function (v1) {
-                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Clown.Clown)(Data_Traversable.traverse(dictTraversable)(dictApplicative)(l)(v1));
-                };
-            };
-        };
-    });
-};
-var bisequenceDefault = function (dictBitraversable) {
-    return function (dictApplicative) {
-        return bitraverse(dictBitraversable)(dictApplicative)(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var bisequence = function (dict) {
-    return dict.bisequence;
-};
-var bitraversableFlip = function (dictBitraversable) {
-    return new Bitraversable(function () {
-        return Data_Bifoldable.bifoldableFlip(dictBitraversable.Bifoldable1());
-    }, function () {
-        return Data_Bifunctor_Flip.bifunctorFlip(dictBitraversable.Bifunctor0());
-    }, function (dictApplicative) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Flip.Flip)(bisequence(dictBitraversable)(dictApplicative)(v));
-        };
-    }, function (dictApplicative) {
-        return function (r) {
-            return function (l) {
-                return function (v) {
-                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Flip.Flip)(bitraverse(dictBitraversable)(dictApplicative)(l)(r)(v));
-                };
-            };
-        };
-    });
-};
-var bitraversableProduct = function (dictBitraversable) {
-    return function (dictBitraversable1) {
-        return new Bitraversable(function () {
-            return Data_Bifoldable.bifoldableProduct(dictBitraversable.Bifoldable1())(dictBitraversable1.Bifoldable1());
-        }, function () {
-            return Data_Bifunctor_Product.bifunctorProduct(dictBitraversable.Bifunctor0())(dictBitraversable1.Bifunctor0());
-        }, function (dictApplicative) {
-            return function (v) {
-                return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Product.Product.create)(bisequence(dictBitraversable)(dictApplicative)(v.value0)))(bisequence(dictBitraversable1)(dictApplicative)(v.value1));
-            };
-        }, function (dictApplicative) {
-            return function (l) {
-                return function (r) {
-                    return function (v) {
-                        return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Product.Product.create)(bitraverse(dictBitraversable)(dictApplicative)(l)(r)(v.value0)))(bitraverse(dictBitraversable1)(dictApplicative)(l)(r)(v.value1));
-                    };
-                };
-            };
-        });
-    };
-};
-var bitraversableWrap = function (dictBitraversable) {
-    return new Bitraversable(function () {
-        return Data_Bifoldable.bifoldableWrap(dictBitraversable.Bifoldable1());
-    }, function () {
-        return Data_Bifunctor_Wrap.bifunctorWrap(dictBitraversable.Bifunctor0());
-    }, function (dictApplicative) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Wrap.Wrap)(bisequence(dictBitraversable)(dictApplicative)(v));
-        };
-    }, function (dictApplicative) {
-        return function (l) {
-            return function (r) {
-                return function (v) {
-                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Wrap.Wrap)(bitraverse(dictBitraversable)(dictApplicative)(l)(r)(v));
-                };
-            };
-        };
-    });
-};
-var bitraverseDefault = function (dictBitraversable) {
-    return function (dictApplicative) {
-        return function (f) {
-            return function (g) {
-                return function (t) {
-                    return bisequence(dictBitraversable)(dictApplicative)(Data_Bifunctor.bimap(dictBitraversable.Bifunctor0())(f)(g)(t));
-                };
-            };
-        };
-    };
-};
-var bifor = function (dictBitraversable) {
-    return function (dictApplicative) {
-        return function (t) {
-            return function (f) {
-                return function (g) {
-                    return bitraverse(dictBitraversable)(dictApplicative)(f)(g)(t);
-                };
-            };
-        };
-    };
-};
-module.exports = {
-    Bitraversable: Bitraversable, 
-    bifor: bifor, 
-    bisequence: bisequence, 
-    bisequenceDefault: bisequenceDefault, 
-    bitraverse: bitraverse, 
-    bitraverseDefault: bitraverseDefault, 
-    lfor: lfor, 
-    ltraverse: ltraverse, 
-    rfor: rfor, 
-    rtraverse: rtraverse, 
-    bitraversableClown: bitraversableClown, 
-    bitraversableJoker: bitraversableJoker, 
-    bitraversableFlip: bitraversableFlip, 
-    bitraversableProduct: bitraversableProduct, 
-    bitraversableWrap: bitraversableWrap
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Data.Bifoldable":121,"../Data.Bifunctor":127,"../Data.Bifunctor.Clown":122,"../Data.Bifunctor.Flip":123,"../Data.Bifunctor.Joker":124,"../Data.Bifunctor.Product":125,"../Data.Bifunctor.Wrap":126,"../Data.Functor":155,"../Data.Traversable":244,"../Prelude":268}],129:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var otherwise = true;
-module.exports = {
-    otherwise: otherwise
-};
-
-},{}],130:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Unit = require("../Data.Unit");
-var BooleanAlgebra = function (HeytingAlgebra0) {
-    this.HeytingAlgebra0 = HeytingAlgebra0;
-};
-var booleanAlgebraUnit = new BooleanAlgebra(function () {
-    return Data_HeytingAlgebra.heytingAlgebraUnit;
-});
-var booleanAlgebraFn = function (dictBooleanAlgebra) {
-    return new BooleanAlgebra(function () {
-        return Data_HeytingAlgebra.heytingAlgebraFunction(dictBooleanAlgebra.HeytingAlgebra0());
-    });
-};
-var booleanAlgebraBoolean = new BooleanAlgebra(function () {
-    return Data_HeytingAlgebra.heytingAlgebraBoolean;
-});
-module.exports = {
-    BooleanAlgebra: BooleanAlgebra, 
-    booleanAlgebraBoolean: booleanAlgebraBoolean, 
-    booleanAlgebraUnit: booleanAlgebraUnit, 
-    booleanAlgebraFn: booleanAlgebraFn
-};
-
-},{"../Data.HeytingAlgebra":160,"../Data.Unit":249}],131:[function(require,module,exports){
-"use strict";
-
-exports.topInt = 2147483647;
-exports.bottomInt = -2147483648;
-
-exports.topChar = String.fromCharCode(65535);
-exports.bottomChar = String.fromCharCode(0);
-
-},{}],132:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Unit = require("../Data.Unit");
-var Bounded = function (Ord0, bottom, top) {
-    this.Ord0 = Ord0;
-    this.bottom = bottom;
-    this.top = top;
-};
-var top = function (dict) {
-    return dict.top;
-};
-var boundedUnit = new Bounded(function () {
-    return Data_Ord.ordUnit;
-}, Data_Unit.unit, Data_Unit.unit);
-var boundedOrdering = new Bounded(function () {
-    return Data_Ord.ordOrdering;
-}, Data_Ordering.LT.value, Data_Ordering.GT.value);
-var boundedInt = new Bounded(function () {
-    return Data_Ord.ordInt;
-}, $foreign.bottomInt, $foreign.topInt);
-var boundedChar = new Bounded(function () {
-    return Data_Ord.ordChar;
-}, $foreign.bottomChar, $foreign.topChar);
-var boundedBoolean = new Bounded(function () {
-    return Data_Ord.ordBoolean;
-}, false, true);
-var bottom = function (dict) {
-    return dict.bottom;
-};
-module.exports = {
-    Bounded: Bounded, 
-    bottom: bottom, 
-    top: top, 
-    boundedBoolean: boundedBoolean, 
-    boundedInt: boundedInt, 
-    boundedChar: boundedChar, 
-    boundedOrdering: boundedOrdering, 
-    boundedUnit: boundedUnit
-};
-
-},{"../Data.Ord":216,"../Data.Ordering":217,"../Data.Unit":249,"./foreign":131}],133:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Ring = require("../Data.Ring");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Unit = require("../Data.Unit");
-var CommutativeRing = function (Ring0) {
-    this.Ring0 = Ring0;
-};
-var commutativeRingUnit = new CommutativeRing(function () {
-    return Data_Ring.ringUnit;
-});
-var commutativeRingNumber = new CommutativeRing(function () {
-    return Data_Ring.ringNumber;
-});
-var commutativeRingInt = new CommutativeRing(function () {
-    return Data_Ring.ringInt;
-});
-var commutativeRingFn = function (dictCommutativeRing) {
-    return new CommutativeRing(function () {
-        return Data_Ring.ringFn(dictCommutativeRing.Ring0());
-    });
-};
-module.exports = {
-    CommutativeRing: CommutativeRing, 
-    commutativeRingInt: commutativeRingInt, 
-    commutativeRingNumber: commutativeRingNumber, 
-    commutativeRingUnit: commutativeRingUnit, 
-    commutativeRingFn: commutativeRingFn
-};
-
-},{"../Data.Ring":227,"../Data.Semiring":231,"../Data.Unit":249}],134:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
-var Data_Bounded = require("../Data.Bounded");
-var Data_CommutativeRing = require("../Data.CommutativeRing");
-var Data_Eq = require("../Data.Eq");
-var Data_EuclideanRing = require("../Data.EuclideanRing");
-var Data_Field = require("../Data.Field");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Contravariant = require("../Data.Functor.Contravariant");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var Const = function (x) {
-    return x;
-};
-var showConst = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Const " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var semiringConst = function (dictSemiring) {
-    return dictSemiring;
-};
-var semigroupoidConst = new Control_Semigroupoid.Semigroupoid(function (v) {
-    return function (v1) {
-        return v1;
-    };
-});
-var semigroupConst = function (dictSemigroup) {
-    return dictSemigroup;
-};
-var ringConst = function (dictRing) {
-    return dictRing;
-};
-var ordConst = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeConst = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Const);
-var monoidConst = function (dictMonoid) {
-    return dictMonoid;
-};
-var heytingAlgebraConst = function (dictHeytingAlgebra) {
-    return dictHeytingAlgebra;
-};
-var functorConst = new Data_Functor.Functor(function (v) {
-    return function (v1) {
-        return v1;
-    };
-});
-var invariantConst = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorConst));
-var foldableConst = new Data_Foldable.Foldable(function (dictMonoid) {
-    return function (v) {
-        return function (v1) {
-            return Data_Monoid.mempty(dictMonoid);
-        };
-    };
-}, function (v) {
-    return function (z) {
-        return function (v1) {
-            return z;
-        };
-    };
-}, function (v) {
-    return function (z) {
-        return function (v1) {
-            return z;
-        };
-    };
-});
-var traversableConst = new Data_Traversable.Traversable(function () {
-    return foldableConst;
-}, function () {
-    return functorConst;
-}, function (dictApplicative) {
-    return function (v) {
-        return Control_Applicative.pure(dictApplicative)(v);
-    };
-}, function (dictApplicative) {
-    return function (v) {
-        return function (v1) {
-            return Control_Applicative.pure(dictApplicative)(v1);
-        };
-    };
-});
-var fieldConst = function (dictField) {
-    return dictField;
-};
-var euclideanRingConst = function (dictEuclideanRing) {
-    return dictEuclideanRing;
-};
-var eqConst = function (dictEq) {
-    return dictEq;
-};
-var contravariantConst = new Data_Functor_Contravariant.Contravariant(function (v) {
-    return function (v1) {
-        return v1;
-    };
-});
-var commutativeRingConst = function (dictCommutativeRing) {
-    return dictCommutativeRing;
-};
-var boundedConst = function (dictBounded) {
-    return dictBounded;
-};
-var booleanAlgebraConst = function (dictBooleanAlgebra) {
-    return dictBooleanAlgebra;
-};
-var applyConst = function (dictSemigroup) {
-    return new Control_Apply.Apply(function () {
-        return functorConst;
-    }, function (v) {
-        return function (v1) {
-            return Data_Semigroup.append(dictSemigroup)(v)(v1);
-        };
-    });
-};
-var bindConst = function (dictSemigroup) {
-    return new Control_Bind.Bind(function () {
-        return applyConst(dictSemigroup);
-    }, function (v) {
-        return function (v1) {
-            return v;
-        };
-    });
-};
-var applicativeConst = function (dictMonoid) {
-    return new Control_Applicative.Applicative(function () {
-        return applyConst(dictMonoid.Semigroup0());
-    }, function (v) {
-        return Data_Monoid.mempty(dictMonoid);
-    });
-};
-module.exports = {
-    Const: Const, 
-    newtypeConst: newtypeConst, 
-    eqConst: eqConst, 
-    ordConst: ordConst, 
-    boundedConst: boundedConst, 
-    showConst: showConst, 
-    semigroupoidConst: semigroupoidConst, 
-    semigroupConst: semigroupConst, 
-    monoidConst: monoidConst, 
-    semiringConst: semiringConst, 
-    ringConst: ringConst, 
-    euclideanRingConst: euclideanRingConst, 
-    commutativeRingConst: commutativeRingConst, 
-    fieldConst: fieldConst, 
-    heytingAlgebraConst: heytingAlgebraConst, 
-    booleanAlgebraConst: booleanAlgebraConst, 
-    functorConst: functorConst, 
-    invariantConst: invariantConst, 
-    contravariantConst: contravariantConst, 
-    applyConst: applyConst, 
-    bindConst: bindConst, 
-    applicativeConst: applicativeConst, 
-    foldableConst: foldableConst, 
-    traversableConst: traversableConst
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Semigroupoid":92,"../Data.BooleanAlgebra":130,"../Data.Bounded":132,"../Data.CommutativeRing":133,"../Data.Eq":138,"../Data.EuclideanRing":140,"../Data.Field":141,"../Data.Foldable":143,"../Data.Functor":155,"../Data.Functor.Contravariant":152,"../Data.Functor.Invariant":153,"../Data.HeytingAlgebra":160,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.Traversable":244,"../Prelude":268}],135:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Identity = require("../Data.Identity");
-var Data_Newtype = require("../Data.Newtype");
-var Prelude = require("../Prelude");
-var Distributive = function (Functor0, collect, distribute) {
-    this.Functor0 = Functor0;
-    this.collect = collect;
-    this.distribute = distribute;
-};
-var distributiveIdentity = new Distributive(function () {
-    return Data_Identity.functorIdentity;
-}, function (dictFunctor) {
-    return function (f) {
-        return function ($11) {
-            return Data_Identity.Identity(Data_Functor.map(dictFunctor)(function ($12) {
-                return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(f($12));
-            })($11));
-        };
-    };
-}, function (dictFunctor) {
-    return function ($13) {
-        return Data_Identity.Identity(Data_Functor.map(dictFunctor)(Data_Newtype.unwrap(Data_Identity.newtypeIdentity))($13));
-    };
-});
-var distribute = function (dict) {
-    return dict.distribute;
-};
-var distributiveFunction = new Distributive(function () {
-    return Data_Functor.functorFn;
-}, function (dictFunctor) {
-    return function (f) {
-        return function ($14) {
-            return distribute(distributiveFunction)(dictFunctor)(Data_Functor.map(dictFunctor)(f)($14));
-        };
-    };
-}, function (dictFunctor) {
-    return function (a) {
-        return function (e) {
-            return Data_Functor.map(dictFunctor)(function (v) {
-                return v(e);
-            })(a);
-        };
-    };
-});
-var cotraverse = function (dictDistributive) {
-    return function (dictFunctor) {
-        return function (f) {
-            return function ($15) {
-                return Data_Functor.map(dictDistributive.Functor0())(f)(distribute(dictDistributive)(dictFunctor)($15));
-            };
-        };
-    };
-};
-var collectDefault = function (dictDistributive) {
-    return function (dictFunctor) {
-        return function (f) {
-            return function ($16) {
-                return distribute(dictDistributive)(dictFunctor)(Data_Functor.map(dictFunctor)(f)($16));
-            };
-        };
-    };
-};
-var collect = function (dict) {
-    return dict.collect;
-};
-var distributeDefault = function (dictDistributive) {
-    return function (dictFunctor) {
-        return collect(dictDistributive)(dictFunctor)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-module.exports = {
-    Distributive: Distributive, 
-    collect: collect, 
-    collectDefault: collectDefault, 
-    cotraverse: cotraverse, 
-    distribute: distribute, 
-    distributeDefault: distributeDefault, 
-    distributiveIdentity: distributiveIdentity, 
-    distributiveFunction: distributiveFunction
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Functor":155,"../Data.Identity":161,"../Data.Newtype":209,"../Prelude":268}],136:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bifoldable = require("../Data.Bifoldable");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Bitraversable = require("../Data.Bitraversable");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var Left = (function () {
-    function Left(value0) {
-        this.value0 = value0;
-    };
-    Left.create = function (value0) {
-        return new Left(value0);
-    };
-    return Left;
-})();
-var Right = (function () {
-    function Right(value0) {
-        this.value0 = value0;
-    };
-    Right.create = function (value0) {
-        return new Right(value0);
-    };
-    return Right;
-})();
-var showEither = function (dictShow) {
-    return function (dictShow1) {
-        return new Data_Show.Show(function (v) {
-            if (v instanceof Left) {
-                return "(Left " + (Data_Show.show(dictShow)(v.value0) + ")");
-            };
-            if (v instanceof Right) {
-                return "(Right " + (Data_Show.show(dictShow1)(v.value0) + ")");
-            };
-            throw new Error("Failed pattern match at Data.Either line 161, column 3 - line 162, column 3: " + [ v.constructor.name ]);
-        });
-    };
-};
-var functorEither = new Data_Functor.Functor(function (v) {
-    return function (v1) {
-        if (v1 instanceof Left) {
-            return new Left(v1.value0);
-        };
-        if (v1 instanceof Right) {
-            return new Right(v(v1.value0));
-        };
-        throw new Error("Failed pattern match at Data.Either line 37, column 3 - line 37, column 26: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var invariantEither = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorEither));
-var fromRight = function (dictPartial) {
-    return function (v) {
-        var __unused = function (dictPartial1) {
-            return function ($dollar62) {
-                return $dollar62;
-            };
-        };
-        return __unused(dictPartial)((function () {
-            if (v instanceof Right) {
-                return v.value0;
-            };
-            throw new Error("Failed pattern match at Data.Either line 253, column 1 - line 253, column 23: " + [ v.constructor.name ]);
-        })());
-    };
-};
-var fromLeft = function (dictPartial) {
-    return function (v) {
-        var __unused = function (dictPartial1) {
-            return function ($dollar66) {
-                return $dollar66;
-            };
-        };
-        return __unused(dictPartial)((function () {
-            if (v instanceof Left) {
-                return v.value0;
-            };
-            throw new Error("Failed pattern match at Data.Either line 248, column 1 - line 248, column 22: " + [ v.constructor.name ]);
-        })());
-    };
-};
-var foldableEither = new Data_Foldable.Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            if (v instanceof Left) {
-                return Data_Monoid.mempty(dictMonoid);
-            };
-            if (v instanceof Right) {
-                return f(v.value0);
-            };
-            throw new Error("Failed pattern match at Data.Either line 189, column 3 - line 189, column 31: " + [ f.constructor.name, v.constructor.name ]);
-        };
-    };
-}, function (v) {
-    return function (z) {
-        return function (v1) {
-            if (v1 instanceof Left) {
-                return z;
-            };
-            if (v1 instanceof Right) {
-                return v(z)(v1.value0);
-            };
-            throw new Error("Failed pattern match at Data.Either line 187, column 3 - line 187, column 26: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-        };
-    };
-}, function (v) {
-    return function (z) {
-        return function (v1) {
-            if (v1 instanceof Left) {
-                return z;
-            };
-            if (v1 instanceof Right) {
-                return v(v1.value0)(z);
-            };
-            throw new Error("Failed pattern match at Data.Either line 185, column 3 - line 185, column 26: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-        };
-    };
-});
-var traversableEither = new Data_Traversable.Traversable(function () {
-    return foldableEither;
-}, function () {
-    return functorEither;
-}, function (dictApplicative) {
-    return function (v) {
-        if (v instanceof Left) {
-            return Control_Applicative.pure(dictApplicative)(new Left(v.value0));
-        };
-        if (v instanceof Right) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v.value0);
-        };
-        throw new Error("Failed pattern match at Data.Either line 203, column 3 - line 203, column 36: " + [ v.constructor.name ]);
-    };
-}, function (dictApplicative) {
-    return function (v) {
-        return function (v1) {
-            if (v1 instanceof Left) {
-                return Control_Applicative.pure(dictApplicative)(new Left(v1.value0));
-            };
-            if (v1 instanceof Right) {
-                return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v(v1.value0));
-            };
-            throw new Error("Failed pattern match at Data.Either line 201, column 3 - line 201, column 39: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-});
-var extendEither = new Control_Extend.Extend(function () {
-    return functorEither;
-}, function (v) {
-    return function (v1) {
-        if (v1 instanceof Left) {
-            return new Left(v1.value0);
-        };
-        return new Right(v(v1));
-    };
-});
-var eqEither = function (dictEq) {
-    return function (dictEq1) {
-        return new Data_Eq.Eq(function (x) {
-            return function (y) {
-                if (x instanceof Left && y instanceof Left) {
-                    return Data_Eq.eq(dictEq)(x.value0)(y.value0);
-                };
-                if (x instanceof Right && y instanceof Right) {
-                    return Data_Eq.eq(dictEq1)(x.value0)(y.value0);
-                };
-                return false;
-            };
-        });
-    };
-};
-var ordEither = function (dictOrd) {
-    return function (dictOrd1) {
-        return new Data_Ord.Ord(function () {
-            return eqEither(dictOrd.Eq0())(dictOrd1.Eq0());
-        }, function (x) {
-            return function (y) {
-                if (x instanceof Left && y instanceof Left) {
-                    return Data_Ord.compare(dictOrd)(x.value0)(y.value0);
-                };
-                if (x instanceof Left) {
-                    return Data_Ordering.LT.value;
-                };
-                if (y instanceof Left) {
-                    return Data_Ordering.GT.value;
-                };
-                if (x instanceof Right && y instanceof Right) {
-                    return Data_Ord.compare(dictOrd1)(x.value0)(y.value0);
-                };
-                throw new Error("Failed pattern match at Data.Either line 176, column 1 - line 176, column 64: " + [ x.constructor.name, y.constructor.name ]);
-            };
-        });
-    };
-};
-var eq1Either = function (dictEq) {
-    return new Data_Eq.Eq1(function (dictEq1) {
-        return Data_Eq.eq(eqEither(dictEq)(dictEq1));
-    });
-};
-var ord1Either = function (dictOrd) {
-    return new Data_Ord.Ord1(function () {
-        return eq1Either(dictOrd.Eq0());
-    }, function (dictOrd1) {
-        return Data_Ord.compare(ordEither(dictOrd)(dictOrd1));
-    });
-};
-var either = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v2 instanceof Left) {
-                return v(v2.value0);
-            };
-            if (v2 instanceof Right) {
-                return v1(v2.value0);
-            };
-            throw new Error("Failed pattern match at Data.Either line 230, column 1 - line 230, column 26: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-        };
-    };
-};
-var isLeft = either(Data_Function["const"](true))(Data_Function["const"](false));
-var isRight = either(Data_Function["const"](false))(Data_Function["const"](true));
-var choose = function (dictAlt) {
-    return function (a) {
-        return function (b) {
-            return Control_Alt.alt(dictAlt)(Data_Functor.map(dictAlt.Functor0())(Left.create)(a))(Data_Functor.map(dictAlt.Functor0())(Right.create)(b));
-        };
-    };
-};
-var boundedEither = function (dictBounded) {
-    return function (dictBounded1) {
-        return new Data_Bounded.Bounded(function () {
-            return ordEither(dictBounded.Ord0())(dictBounded1.Ord0());
-        }, new Left(Data_Bounded.bottom(dictBounded)), new Right(Data_Bounded.top(dictBounded1)));
-    };
-};
-var bifunctorEither = new Data_Bifunctor.Bifunctor(function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v2 instanceof Left) {
-                return new Left(v(v2.value0));
-            };
-            if (v2 instanceof Right) {
-                return new Right(v1(v2.value0));
-            };
-            throw new Error("Failed pattern match at Data.Either line 44, column 3 - line 44, column 34: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-        };
-    };
-});
-var bifoldableEither = new Data_Bifoldable.Bifoldable(function (dictMonoid) {
-    return function (v) {
-        return function (v1) {
-            return function (v2) {
-                if (v2 instanceof Left) {
-                    return v(v2.value0);
-                };
-                if (v2 instanceof Right) {
-                    return v1(v2.value0);
-                };
-                throw new Error("Failed pattern match at Data.Either line 197, column 3 - line 197, column 31: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-            };
-        };
-    };
-}, function (v) {
-    return function (v1) {
-        return function (z) {
-            return function (v2) {
-                if (v2 instanceof Left) {
-                    return v(z)(v2.value0);
-                };
-                if (v2 instanceof Right) {
-                    return v1(z)(v2.value0);
-                };
-                throw new Error("Failed pattern match at Data.Either line 195, column 3 - line 195, column 33: " + [ v.constructor.name, v1.constructor.name, z.constructor.name, v2.constructor.name ]);
-            };
-        };
-    };
-}, function (v) {
-    return function (v1) {
-        return function (z) {
-            return function (v2) {
-                if (v2 instanceof Left) {
-                    return v(v2.value0)(z);
-                };
-                if (v2 instanceof Right) {
-                    return v1(v2.value0)(z);
-                };
-                throw new Error("Failed pattern match at Data.Either line 193, column 3 - line 193, column 33: " + [ v.constructor.name, v1.constructor.name, z.constructor.name, v2.constructor.name ]);
-            };
-        };
-    };
-});
-var bitraversableEither = new Data_Bitraversable.Bitraversable(function () {
-    return bifoldableEither;
-}, function () {
-    return bifunctorEither;
-}, function (dictApplicative) {
-    return function (v) {
-        if (v instanceof Left) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Left.create)(v.value0);
-        };
-        if (v instanceof Right) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v.value0);
-        };
-        throw new Error("Failed pattern match at Data.Either line 209, column 3 - line 209, column 35: " + [ v.constructor.name ]);
-    };
-}, function (dictApplicative) {
-    return function (v) {
-        return function (v1) {
-            return function (v2) {
-                if (v2 instanceof Left) {
-                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Left.create)(v(v2.value0));
-                };
-                if (v2 instanceof Right) {
-                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v1(v2.value0));
-                };
-                throw new Error("Failed pattern match at Data.Either line 207, column 3 - line 207, column 41: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-            };
-        };
-    };
-});
-var applyEither = new Control_Apply.Apply(function () {
-    return functorEither;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Left) {
-            return new Left(v.value0);
-        };
-        if (v instanceof Right) {
-            return Data_Functor.map(functorEither)(v.value0)(v1);
-        };
-        throw new Error("Failed pattern match at Data.Either line 80, column 3 - line 80, column 28: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var bindEither = new Control_Bind.Bind(function () {
-    return applyEither;
-}, either(function (e) {
-    return function (v) {
-        return new Left(e);
-    };
-})(function (a) {
-    return function (f) {
-        return f(a);
-    };
-}));
-var semigroupEither = function (dictSemigroup) {
-    return new Data_Semigroup.Semigroup(function (x) {
-        return function (y) {
-            return Control_Apply.apply(applyEither)(Data_Functor.map(functorEither)(Data_Semigroup.append(dictSemigroup))(x))(y);
-        };
-    });
-};
-var semiringEither = function (dictSemiring) {
-    return new Data_Semiring.Semiring(function (x) {
-        return function (y) {
-            return Control_Apply.apply(applyEither)(Data_Functor.map(functorEither)(Data_Semiring.add(dictSemiring))(x))(y);
-        };
-    }, function (x) {
-        return function (y) {
-            return Control_Apply.apply(applyEither)(Data_Functor.map(functorEither)(Data_Semiring.mul(dictSemiring))(x))(y);
-        };
-    }, new Right(Data_Semiring.one(dictSemiring)), new Right(Data_Semiring.zero(dictSemiring)));
-};
-var applicativeEither = new Control_Applicative.Applicative(function () {
-    return applyEither;
-}, Right.create);
-var monadEither = new Control_Monad.Monad(function () {
-    return applicativeEither;
-}, function () {
-    return bindEither;
-});
-var altEither = new Control_Alt.Alt(function () {
-    return functorEither;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Left) {
-            return v1;
-        };
-        return v;
-    };
-});
-module.exports = {
-    Left: Left, 
-    Right: Right, 
-    choose: choose, 
-    either: either, 
-    fromLeft: fromLeft, 
-    fromRight: fromRight, 
-    isLeft: isLeft, 
-    isRight: isRight, 
-    functorEither: functorEither, 
-    invariantEither: invariantEither, 
-    bifunctorEither: bifunctorEither, 
-    applyEither: applyEither, 
-    applicativeEither: applicativeEither, 
-    altEither: altEither, 
-    bindEither: bindEither, 
-    monadEither: monadEither, 
-    extendEither: extendEither, 
-    showEither: showEither, 
-    eqEither: eqEither, 
-    eq1Either: eq1Either, 
-    ordEither: ordEither, 
-    ord1Either: ord1Either, 
-    boundedEither: boundedEither, 
-    foldableEither: foldableEither, 
-    bifoldableEither: bifoldableEither, 
-    traversableEither: traversableEither, 
-    bitraversableEither: bitraversableEither, 
-    semiringEither: semiringEither, 
-    semigroupEither: semigroupEither
-};
-
-},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bifoldable":121,"../Data.Bifunctor":127,"../Data.Bitraversable":128,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Monoid":207,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.Traversable":244,"../Prelude":268}],137:[function(require,module,exports){
-"use strict";
-
-exports.refEq = function (r1) {
-  return function (r2) {
-    return r1 === r2;
-  };
-};
-
-exports.refIneq = function (r1) {
-  return function (r2) {
-    return r1 !== r2;
-  };
-};
-
-exports.eqArrayImpl = function (f) {
-  return function (xs) {
-    return function (ys) {
-      if (xs.length !== ys.length) return false;
-      for (var i = 0; i < xs.length; i++) {
-        if (!f(xs[i])(ys[i])) return false;
-      }
-      return true;
-    };
-  };
-};
-
-},{}],138:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Unit = require("../Data.Unit");
-var Data_Void = require("../Data.Void");
-var Eq = function (eq) {
-    this.eq = eq;
-};
-var Eq1 = function (eq1) {
-    this.eq1 = eq1;
-};
-var eqVoid = new Eq(function (v) {
-    return function (v1) {
-        return true;
-    };
-});
-var eqUnit = new Eq(function (v) {
-    return function (v1) {
-        return true;
-    };
-});
-var eqString = new Eq($foreign.refEq);
-var eqNumber = new Eq($foreign.refEq);
-var eqInt = new Eq($foreign.refEq);
-var eqChar = new Eq($foreign.refEq);
-var eqBoolean = new Eq($foreign.refEq);
-var eq1 = function (dict) {
-    return dict.eq1;
-};
-var eq = function (dict) {
-    return dict.eq;
-};
-var eqArray = function (dictEq) {
-    return new Eq($foreign.eqArrayImpl(eq(dictEq)));
-};
-var eq1Array = new Eq1(function (dictEq) {
-    return eq(eqArray(dictEq));
-});
-var notEq = function (dictEq) {
-    return function (x) {
-        return function (y) {
-            return eq(eqBoolean)(eq(dictEq)(x)(y))(false);
-        };
-    };
-};
-var notEq1 = function (dictEq1) {
-    return function (dictEq) {
-        return function (x) {
-            return function (y) {
-                return eq(eqBoolean)(eq1(dictEq1)(dictEq)(x)(y))(false);
-            };
-        };
-    };
-};
-module.exports = {
-    Eq: Eq, 
-    Eq1: Eq1, 
-    eq: eq, 
-    eq1: eq1, 
-    notEq: notEq, 
-    notEq1: notEq1, 
-    eqBoolean: eqBoolean, 
-    eqInt: eqInt, 
-    eqNumber: eqNumber, 
-    eqChar: eqChar, 
-    eqString: eqString, 
-    eqUnit: eqUnit, 
-    eqVoid: eqVoid, 
-    eqArray: eqArray, 
-    eq1Array: eq1Array
-};
-
-},{"../Data.Unit":249,"../Data.Void":250,"./foreign":137}],139:[function(require,module,exports){
-"use strict";
-
-exports.intDegree = function (x) {
-  return Math.min(Math.abs(x), 2147483647);
-};
-
-exports.intDiv = function (x) {
-  return function (y) {
-    /* jshint bitwise: false */
-    return x / y | 0;
-  };
-};
-
-exports.intMod = function (x) {
-  return function (y) {
-    return x % y;
-  };
-};
-
-exports.numDiv = function (n1) {
-  return function (n2) {
-    return n1 / n2;
-  };
-};
-
-},{}],140:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
-var Data_CommutativeRing = require("../Data.CommutativeRing");
-var Data_Eq = require("../Data.Eq");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Ring = require("../Data.Ring");
-var Data_Semiring = require("../Data.Semiring");
-var EuclideanRing = function (CommutativeRing0, degree, div, mod) {
-    this.CommutativeRing0 = CommutativeRing0;
-    this.degree = degree;
-    this.div = div;
-    this.mod = mod;
-};
-var mod = function (dict) {
-    return dict.mod;
-};
-var gcd = function (__copy_dictEq) {
-    return function (__copy_dictEuclideanRing) {
-        return function (__copy_a) {
-            return function (__copy_b) {
-                var dictEq = __copy_dictEq;
-                var dictEuclideanRing = __copy_dictEuclideanRing;
-                var a = __copy_a;
-                var b = __copy_b;
-                var __tco_done = false;
-                var __tco_result;
-                var __tco_dictEq;
-                var __tco_dictEuclideanRing;
-                var __tco_a;
-                var __tco_b;
-                function __tco_loop(dictEq, dictEuclideanRing, a, b) {
-                    var $7 = Data_Eq.eq(dictEq)(b)(Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0()));
-                    if ($7) {
-                        __tco_done = true;
-                        return a;
-                    };
-                    __tco_dictEq = dictEq;
-                    __tco_dictEuclideanRing = dictEuclideanRing;
-                    __tco_a = b;
-                    __tco_b = mod(dictEuclideanRing)(a)(b);
-                    return;
-                };
-                while (!__tco_done) {
-                    __tco_result = __tco_loop(dictEq, dictEuclideanRing, a, b);
-                    dictEq = __tco_dictEq;
-                    dictEuclideanRing = __tco_dictEuclideanRing;
-                    a = __tco_a;
-                    b = __tco_b;
-                };
-                return __tco_result;
-            };
-        };
-    };
-};
-var euclideanRingNumber = new EuclideanRing(function () {
-    return Data_CommutativeRing.commutativeRingNumber;
-}, function (v) {
-    return 1;
-}, $foreign.numDiv, function (v) {
-    return function (v1) {
-        return 0.0;
-    };
-});
-var euclideanRingInt = new EuclideanRing(function () {
-    return Data_CommutativeRing.commutativeRingInt;
-}, $foreign.intDegree, $foreign.intDiv, $foreign.intMod);
-var div = function (dict) {
-    return dict.div;
-};
-var lcm = function (dictEq) {
-    return function (dictEuclideanRing) {
-        return function (a) {
-            return function (b) {
-                var $8 = Data_Eq.eq(dictEq)(a)(Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0())) || Data_Eq.eq(dictEq)(b)(Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0()));
-                if ($8) {
-                    return Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0());
-                };
-                return div(dictEuclideanRing)(Data_Semiring.mul(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0())(a)(b))(gcd(dictEq)(dictEuclideanRing)(a)(b));
-            };
-        };
-    };
-};
-var degree = function (dict) {
-    return dict.degree;
-};
-module.exports = {
-    EuclideanRing: EuclideanRing, 
-    degree: degree, 
-    div: div, 
-    gcd: gcd, 
-    lcm: lcm, 
-    mod: mod, 
-    euclideanRingInt: euclideanRingInt, 
-    euclideanRingNumber: euclideanRingNumber
-};
-
-},{"../Data.BooleanAlgebra":130,"../Data.CommutativeRing":133,"../Data.Eq":138,"../Data.HeytingAlgebra":160,"../Data.Ring":227,"../Data.Semiring":231,"./foreign":139}],141:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_CommutativeRing = require("../Data.CommutativeRing");
-var Data_EuclideanRing = require("../Data.EuclideanRing");
-var Data_Ring = require("../Data.Ring");
-var Data_Semiring = require("../Data.Semiring");
-var Field = function (EuclideanRing0) {
-    this.EuclideanRing0 = EuclideanRing0;
-};
-var fieldNumber = new Field(function () {
-    return Data_EuclideanRing.euclideanRingNumber;
-});
-module.exports = {
-    Field: Field, 
-    fieldNumber: fieldNumber
-};
-
-},{"../Data.CommutativeRing":133,"../Data.EuclideanRing":140,"../Data.Ring":227,"../Data.Semiring":231}],142:[function(require,module,exports){
-"use strict";
-
-exports.foldrArray = function (f) {
-  return function (init) {
-    return function (xs) {
-      var acc = init;
-      var len = xs.length;
-      for (var i = len - 1; i >= 0; i--) {
-        acc = f(xs[i])(acc);
-      }
-      return acc;
-    };
-  };
-};
-
-exports.foldlArray = function (f) {
-  return function (init) {
-    return function (xs) {
-      var acc = init;
-      var len = xs.length;
-      for (var i = 0; i < len; i++) {
-        acc = f(acc)(xs[i]);
-      }
-      return acc;
-    };
-  };
-};
-
-},{}],143:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Alt = require("../Control.Alt");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Maybe_First = require("../Data.Maybe.First");
-var Data_Maybe_Last = require("../Data.Maybe.Last");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Monoid_Additive = require("../Data.Monoid.Additive");
-var Data_Monoid_Conj = require("../Data.Monoid.Conj");
-var Data_Monoid_Disj = require("../Data.Monoid.Disj");
-var Data_Monoid_Dual = require("../Data.Monoid.Dual");
-var Data_Monoid_Endo = require("../Data.Monoid.Endo");
-var Data_Monoid_Multiplicative = require("../Data.Monoid.Multiplicative");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Foldable = function (foldMap, foldl, foldr) {
-    this.foldMap = foldMap;
-    this.foldl = foldl;
-    this.foldr = foldr;
-};
-var foldr = function (dict) {
-    return dict.foldr;
-};
-var $$null = function (dictFoldable) {
-    return foldr(dictFoldable)(function (v) {
-        return function (v1) {
-            return false;
-        };
-    })(true);
-};
-var oneOf = function (dictFoldable) {
-    return function (dictPlus) {
-        return foldr(dictFoldable)(Control_Alt.alt(dictPlus.Alt0()))(Control_Plus.empty(dictPlus));
-    };
-};
-var traverse_ = function (dictApplicative) {
-    return function (dictFoldable) {
-        return function (f) {
-            return foldr(dictFoldable)(function ($175) {
-                return Control_Apply.applySecond(dictApplicative.Apply0())(f($175));
-            })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
-        };
-    };
-};
-var for_ = function (dictApplicative) {
-    return function (dictFoldable) {
-        return Data_Function.flip(traverse_(dictApplicative)(dictFoldable));
-    };
-};
-var sequence_ = function (dictApplicative) {
-    return function (dictFoldable) {
-        return traverse_(dictApplicative)(dictFoldable)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var foldl = function (dict) {
-    return dict.foldl;
-};
-var intercalate = function (dictFoldable) {
-    return function (dictMonoid) {
-        return function (sep) {
-            return function (xs) {
-                var go = function (v) {
-                    return function (x) {
-                        if (v.init) {
-                            return {
-                                init: false, 
-                                acc: x
-                            };
-                        };
-                        return {
-                            init: false, 
-                            acc: Data_Semigroup.append(dictMonoid.Semigroup0())(v.acc)(Data_Semigroup.append(dictMonoid.Semigroup0())(sep)(x))
-                        };
-                    };
-                };
-                return (foldl(dictFoldable)(go)({
-                    init: true, 
-                    acc: Data_Monoid.mempty(dictMonoid)
-                })(xs)).acc;
-            };
-        };
-    };
-};
-var length = function (dictFoldable) {
-    return function (dictSemiring) {
-        return foldl(dictFoldable)(function (c) {
-            return function (v) {
-                return Data_Semiring.add(dictSemiring)(Data_Semiring.one(dictSemiring))(c);
-            };
-        })(Data_Semiring.zero(dictSemiring));
-    };
-};
-var maximumBy = function (dictFoldable) {
-    return function (cmp) {
-        var max$prime = function (v) {
-            return function (v1) {
-                if (v instanceof Data_Maybe.Nothing) {
-                    return new Data_Maybe.Just(v1);
-                };
-                if (v instanceof Data_Maybe.Just) {
-                    return new Data_Maybe.Just((function () {
-                        var $98 = Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1))(Data_Ordering.GT.value);
-                        if ($98) {
-                            return v.value0;
-                        };
-                        return v1;
-                    })());
-                };
-                throw new Error("Failed pattern match at Data.Foldable line 296, column 3 - line 296, column 27: " + [ v.constructor.name, v1.constructor.name ]);
-            };
-        };
-        return foldl(dictFoldable)(max$prime)(Data_Maybe.Nothing.value);
-    };
-};
-var maximum = function (dictOrd) {
-    return function (dictFoldable) {
-        return maximumBy(dictFoldable)(Data_Ord.compare(dictOrd));
-    };
-};
-var minimumBy = function (dictFoldable) {
-    return function (cmp) {
-        var min$prime = function (v) {
-            return function (v1) {
-                if (v instanceof Data_Maybe.Nothing) {
-                    return new Data_Maybe.Just(v1);
-                };
-                if (v instanceof Data_Maybe.Just) {
-                    return new Data_Maybe.Just((function () {
-                        var $102 = Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1))(Data_Ordering.LT.value);
-                        if ($102) {
-                            return v.value0;
-                        };
-                        return v1;
-                    })());
-                };
-                throw new Error("Failed pattern match at Data.Foldable line 309, column 3 - line 309, column 27: " + [ v.constructor.name, v1.constructor.name ]);
-            };
-        };
-        return foldl(dictFoldable)(min$prime)(Data_Maybe.Nothing.value);
-    };
-};
-var minimum = function (dictOrd) {
-    return function (dictFoldable) {
-        return minimumBy(dictFoldable)(Data_Ord.compare(dictOrd));
-    };
-};
-var product = function (dictFoldable) {
-    return function (dictSemiring) {
-        return foldl(dictFoldable)(Data_Semiring.mul(dictSemiring))(Data_Semiring.one(dictSemiring));
-    };
-};
-var sum = function (dictFoldable) {
-    return function (dictSemiring) {
-        return foldl(dictFoldable)(Data_Semiring.add(dictSemiring))(Data_Semiring.zero(dictSemiring));
-    };
-};
-var foldableMultiplicative = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return f(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(v)(z);
-        };
-    };
-});
-var foldableMaybe = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            if (v instanceof Data_Maybe.Nothing) {
-                return Data_Monoid.mempty(dictMonoid);
-            };
-            if (v instanceof Data_Maybe.Just) {
-                return f(v.value0);
-            };
-            throw new Error("Failed pattern match at Data.Foldable line 130, column 3 - line 130, column 30: " + [ f.constructor.name, v.constructor.name ]);
-        };
-    };
-}, function (v) {
-    return function (z) {
-        return function (v1) {
-            if (v1 instanceof Data_Maybe.Nothing) {
-                return z;
-            };
-            if (v1 instanceof Data_Maybe.Just) {
-                return v(z)(v1.value0);
-            };
-            throw new Error("Failed pattern match at Data.Foldable line 128, column 3 - line 128, column 25: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-        };
-    };
-}, function (v) {
-    return function (z) {
-        return function (v1) {
-            if (v1 instanceof Data_Maybe.Nothing) {
-                return z;
-            };
-            if (v1 instanceof Data_Maybe.Just) {
-                return v(v1.value0)(z);
-            };
-            throw new Error("Failed pattern match at Data.Foldable line 126, column 3 - line 126, column 25: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-        };
-    };
-});
-var foldableDual = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return f(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(v)(z);
-        };
-    };
-});
-var foldableDisj = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return f(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(v)(z);
-        };
-    };
-});
-var foldableConj = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return f(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(v)(z);
-        };
-    };
-});
-var foldableAdditive = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return f(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(v)(z);
-        };
-    };
-});
-var foldMapDefaultR = function (dictFoldable) {
-    return function (dictMonoid) {
-        return function (f) {
-            return foldr(dictFoldable)(function (x) {
-                return function (acc) {
-                    return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);
-                };
-            })(Data_Monoid.mempty(dictMonoid));
-        };
-    };
-};
-var foldableArray = new Foldable(function (dictMonoid) {
-    return foldMapDefaultR(foldableArray)(dictMonoid);
-}, $foreign.foldlArray, $foreign.foldrArray);
-var foldMapDefaultL = function (dictFoldable) {
-    return function (dictMonoid) {
-        return function (f) {
-            return foldl(dictFoldable)(function (acc) {
-                return function (x) {
-                    return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);
-                };
-            })(Data_Monoid.mempty(dictMonoid));
-        };
-    };
-};
-var foldMap = function (dict) {
-    return dict.foldMap;
-};
-var foldableFirst = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return foldMap(foldableMaybe)(dictMonoid)(f)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return foldl(foldableMaybe)(f)(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return foldr(foldableMaybe)(f)(z)(v);
-        };
-    };
-});
-var foldableLast = new Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return foldMap(foldableMaybe)(dictMonoid)(f)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return foldl(foldableMaybe)(f)(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return foldr(foldableMaybe)(f)(z)(v);
-        };
-    };
-});
-var foldlDefault = function (dictFoldable) {
-    return function (c) {
-        return function (u) {
-            return function (xs) {
-                return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(foldMap(dictFoldable)(Data_Monoid_Dual.monoidDual(Data_Monoid_Endo.monoidEndo))(function ($176) {
-                    return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(c)($176)));
-                })(xs)))(u);
-            };
-        };
-    };
-};
-var foldrDefault = function (dictFoldable) {
-    return function (c) {
-        return function (u) {
-            return function (xs) {
-                return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(foldMap(dictFoldable)(Data_Monoid_Endo.monoidEndo)(function ($177) {
-                    return Data_Monoid_Endo.Endo(c($177));
-                })(xs))(u);
-            };
-        };
-    };
-};
-var fold = function (dictFoldable) {
-    return function (dictMonoid) {
-        return foldMap(dictFoldable)(dictMonoid)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var findMap = function (dictFoldable) {
-    return function (p) {
-        var go = function (v) {
-            return function (v1) {
-                if (v instanceof Data_Maybe.Nothing) {
-                    return p(v1);
-                };
-                return v;
-            };
-        };
-        return foldl(dictFoldable)(go)(Data_Maybe.Nothing.value);
-    };
-};
-var find = function (dictFoldable) {
-    return function (p) {
-        var go = function (v) {
-            return function (v1) {
-                if (v instanceof Data_Maybe.Nothing && p(v1)) {
-                    return new Data_Maybe.Just(v1);
-                };
-                return v;
-            };
-        };
-        return foldl(dictFoldable)(go)(Data_Maybe.Nothing.value);
-    };
-};
-var any = function (dictFoldable) {
-    return function (dictHeytingAlgebra) {
-        return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Monoid_Disj.newtypeDisj)(Data_Monoid_Disj.newtypeDisj)(Data_Monoid_Disj.Disj)(foldMap(dictFoldable)(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));
-    };
-};
-var elem = function (dictFoldable) {
-    return function (dictEq) {
-        return function ($178) {
-            return any(dictFoldable)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Eq.eq(dictEq)($178));
-        };
-    };
-};
-var notElem = function (dictFoldable) {
-    return function (dictEq) {
-        return function (x) {
-            return function ($179) {
-                return !elem(dictFoldable)(dictEq)(x)($179);
-            };
-        };
-    };
-};
-var or = function (dictFoldable) {
-    return function (dictHeytingAlgebra) {
-        return any(dictFoldable)(dictHeytingAlgebra)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var all = function (dictFoldable) {
-    return function (dictHeytingAlgebra) {
-        return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Monoid_Conj.newtypeConj)(Data_Monoid_Conj.newtypeConj)(Data_Monoid_Conj.Conj)(foldMap(dictFoldable)(Data_Monoid_Conj.monoidConj(dictHeytingAlgebra)));
-    };
-};
-var and = function (dictFoldable) {
-    return function (dictHeytingAlgebra) {
-        return all(dictFoldable)(dictHeytingAlgebra)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-module.exports = {
-    Foldable: Foldable, 
-    all: all, 
-    and: and, 
-    any: any, 
-    elem: elem, 
-    find: find, 
-    findMap: findMap, 
-    fold: fold, 
-    foldMap: foldMap, 
-    foldMapDefaultL: foldMapDefaultL, 
-    foldMapDefaultR: foldMapDefaultR, 
-    foldl: foldl, 
-    foldlDefault: foldlDefault, 
-    foldr: foldr, 
-    foldrDefault: foldrDefault, 
-    for_: for_, 
-    intercalate: intercalate, 
-    length: length, 
-    maximum: maximum, 
-    maximumBy: maximumBy, 
-    minimum: minimum, 
-    minimumBy: minimumBy, 
-    notElem: notElem, 
-    "null": $$null, 
-    oneOf: oneOf, 
-    or: or, 
-    product: product, 
-    sequence_: sequence_, 
-    sum: sum, 
-    traverse_: traverse_, 
-    foldableArray: foldableArray, 
-    foldableMaybe: foldableMaybe, 
-    foldableFirst: foldableFirst, 
-    foldableLast: foldableLast, 
-    foldableAdditive: foldableAdditive, 
-    foldableDual: foldableDual, 
-    foldableDisj: foldableDisj, 
-    foldableConj: foldableConj, 
-    foldableMultiplicative: foldableMultiplicative
-};
-
-},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Maybe.First":196,"../Data.Maybe.Last":197,"../Data.Monoid":207,"../Data.Monoid.Additive":201,"../Data.Monoid.Conj":202,"../Data.Monoid.Disj":203,"../Data.Monoid.Dual":204,"../Data.Monoid.Endo":205,"../Data.Monoid.Multiplicative":206,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Unit":249,"../Prelude":268,"./foreign":142}],144:[function(require,module,exports){
-"use strict";
-
-exports.toForeign = function (value) {
-  return value;
-};
-
-exports.unsafeFromForeign = function (value) {
-  return value;
-};
-
-exports.typeOf = function (value) {
-  return typeof value;
-};
-
-exports.tagOf = function (value) {
-  return Object.prototype.toString.call(value).slice(8, -1);
-};
-
-exports.isNull = function (value) {
-  return value === null;
-};
-
-exports.isUndefined = function (value) {
-  return value === undefined;
-};
-
-exports.isArray = Array.isArray || function (value) {
-  return Object.prototype.toString.call(value) === "[object Array]";
-};
-
-},{}],145:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Except = require("../Control.Monad.Except");
-var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Boolean = require("../Data.Boolean");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Identity = require("../Data.Identity");
-var Data_Int = require("../Data.Int");
-var Data_List_NonEmpty = require("../Data.List.NonEmpty");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_String = require("../Data.String");
-var Prelude = require("../Prelude");
-var ForeignError = (function () {
-    function ForeignError(value0) {
-        this.value0 = value0;
-    };
-    ForeignError.create = function (value0) {
-        return new ForeignError(value0);
-    };
-    return ForeignError;
-})();
-var TypeMismatch = (function () {
-    function TypeMismatch(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    TypeMismatch.create = function (value0) {
-        return function (value1) {
-            return new TypeMismatch(value0, value1);
-        };
-    };
-    return TypeMismatch;
-})();
-var ErrorAtIndex = (function () {
-    function ErrorAtIndex(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    ErrorAtIndex.create = function (value0) {
-        return function (value1) {
-            return new ErrorAtIndex(value0, value1);
-        };
-    };
-    return ErrorAtIndex;
-})();
-var ErrorAtProperty = (function () {
-    function ErrorAtProperty(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    ErrorAtProperty.create = function (value0) {
-        return function (value1) {
-            return new ErrorAtProperty(value0, value1);
-        };
-    };
-    return ErrorAtProperty;
-})();
-var JSONError = (function () {
-    function JSONError(value0) {
-        this.value0 = value0;
-    };
-    JSONError.create = function (value0) {
-        return new JSONError(value0);
-    };
-    return JSONError;
-})();
-var showForeignError = new Data_Show.Show(function (v) {
-    if (v instanceof ForeignError) {
-        return "(ForeignError " + (v.value0 + ")");
-    };
-    if (v instanceof ErrorAtIndex) {
-        return "(ErrorAtIndex " + (Data_Show.show(Data_Show.showInt)(v.value0) + (" " + (Data_Show.show(showForeignError)(v.value1) + ")")));
-    };
-    if (v instanceof ErrorAtProperty) {
-        return "(ErrorAtProperty " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(showForeignError)(v.value1) + ")")));
-    };
-    if (v instanceof JSONError) {
-        return "(JSONError " + (Data_Show.show(Data_Show.showString)(v.value0) + ")");
-    };
-    if (v instanceof TypeMismatch) {
-        return "(TypeMismatch " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(Data_Show.showString)(v.value1) + ")")));
-    };
-    throw new Error("Failed pattern match at Data.Foreign line 65, column 3 - line 66, column 3: " + [ v.constructor.name ]);
-});
-var renderForeignError = function (v) {
-    if (v instanceof ForeignError) {
-        return v.value0;
-    };
-    if (v instanceof ErrorAtIndex) {
-        return "Error at array index " + (Data_Show.show(Data_Show.showInt)(v.value0) + (": " + Data_Show.show(showForeignError)(v.value1)));
-    };
-    if (v instanceof ErrorAtProperty) {
-        return "Error at property " + (Data_Show.show(Data_Show.showString)(v.value0) + (": " + Data_Show.show(showForeignError)(v.value1)));
-    };
-    if (v instanceof JSONError) {
-        return "JSON error: " + v.value0;
-    };
-    if (v instanceof TypeMismatch) {
-        return "Type mismatch: expected " + (v.value0 + (", found " + v.value1));
-    };
-    throw new Error("Failed pattern match at Data.Foreign line 75, column 1 - line 75, column 44: " + [ v.constructor.name ]);
-};
-var readUndefined = function (value) {
-    if ($foreign.isUndefined(value)) {
-        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Maybe.Nothing.value);
-    };
-    if (Data_Boolean.otherwise) {
-        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(new Data_Maybe.Just(value));
-    };
-    throw new Error("Failed pattern match at Data.Foreign line 156, column 1 - line 158, column 34: " + [ value.constructor.name ]);
-};
-var readNullOrUndefined = function (value) {
-    if ($foreign.isNull(value) || $foreign.isUndefined(value)) {
-        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Maybe.Nothing.value);
-    };
-    if (Data_Boolean.otherwise) {
-        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(new Data_Maybe.Just(value));
-    };
-    throw new Error("Failed pattern match at Data.Foreign line 161, column 1 - line 163, column 34: " + [ value.constructor.name ]);
-};
-var readNull = function (value) {
-    if ($foreign.isNull(value)) {
-        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Maybe.Nothing.value);
-    };
-    if (Data_Boolean.otherwise) {
-        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(new Data_Maybe.Just(value));
-    };
-    throw new Error("Failed pattern match at Data.Foreign line 151, column 1 - line 153, column 34: " + [ value.constructor.name ]);
-};
-var fail = function ($121) {
-    return Control_Monad_Error_Class.throwError(Control_Monad_Except_Trans.monadThrowExceptT(Data_Identity.monadIdentity))(Data_List_NonEmpty.singleton($121));
-};
-var readArray = function (value) {
-    if ($foreign.isArray(value)) {
-        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))($foreign.unsafeFromForeign(value));
-    };
-    if (Data_Boolean.otherwise) {
-        return fail(new TypeMismatch("array", $foreign.tagOf(value)));
-    };
-    throw new Error("Failed pattern match at Data.Foreign line 146, column 1 - line 148, column 58: " + [ value.constructor.name ]);
-};
-var unsafeReadTagged = function (tag) {
-    return function (value) {
-        if ($foreign.tagOf(value) === tag) {
-            return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))($foreign.unsafeFromForeign(value));
-        };
-        if (Data_Boolean.otherwise) {
-            return fail(new TypeMismatch(tag, $foreign.tagOf(value)));
-        };
-        throw new Error("Failed pattern match at Data.Foreign line 105, column 1 - line 107, column 54: " + [ tag.constructor.name, value.constructor.name ]);
-    };
-};
-var readBoolean = unsafeReadTagged("Boolean");
-var readNumber = unsafeReadTagged("Number");
-var readInt = function (value) {
-    var error = Data_Either.Left.create(Data_List_NonEmpty.singleton(new TypeMismatch("Int", $foreign.tagOf(value))));
-    var fromNumber = function ($122) {
-        return Data_Maybe.maybe(error)(Control_Applicative.pure(Data_Either.applicativeEither))(Data_Int.fromNumber($122));
-    };
-    return Control_Monad_Except.mapExcept(Data_Either.either(Data_Function["const"](error))(fromNumber))(readNumber(value));
-};
-var readString = unsafeReadTagged("String");
-var readChar = function (value) {
-    var error = Data_Either.Left.create(Data_List_NonEmpty.singleton(new TypeMismatch("Char", $foreign.tagOf(value))));
-    var fromString = function ($123) {
-        return Data_Maybe.maybe(error)(Control_Applicative.pure(Data_Either.applicativeEither))(Data_String.toChar($123));
-    };
-    return Control_Monad_Except.mapExcept(Data_Either.either(Data_Function["const"](error))(fromString))(readString(value));
-};
-var eqForeignError = new Data_Eq.Eq(function (x) {
-    return function (y) {
-        if (x instanceof ForeignError && y instanceof ForeignError) {
-            return x.value0 === y.value0;
-        };
-        if (x instanceof TypeMismatch && y instanceof TypeMismatch) {
-            return x.value0 === y.value0 && x.value1 === y.value1;
-        };
-        if (x instanceof ErrorAtIndex && y instanceof ErrorAtIndex) {
-            return x.value0 === y.value0 && Data_Eq.eq(eqForeignError)(x.value1)(y.value1);
-        };
-        if (x instanceof ErrorAtProperty && y instanceof ErrorAtProperty) {
-            return x.value0 === y.value0 && Data_Eq.eq(eqForeignError)(x.value1)(y.value1);
-        };
-        if (x instanceof JSONError && y instanceof JSONError) {
-            return x.value0 === y.value0;
-        };
-        return false;
-    };
-});
-var ordForeignError = new Data_Ord.Ord(function () {
-    return eqForeignError;
-}, function (x) {
-    return function (y) {
-        if (x instanceof ForeignError && y instanceof ForeignError) {
-            return Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
-        };
-        if (x instanceof ForeignError) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof ForeignError) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof TypeMismatch && y instanceof TypeMismatch) {
-            var v = Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
-            if (v instanceof Data_Ordering.LT) {
-                return Data_Ordering.LT.value;
-            };
-            if (v instanceof Data_Ordering.GT) {
-                return Data_Ordering.GT.value;
-            };
-            return Data_Ord.compare(Data_Ord.ordString)(x.value1)(y.value1);
-        };
-        if (x instanceof TypeMismatch) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof TypeMismatch) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof ErrorAtIndex && y instanceof ErrorAtIndex) {
-            var v = Data_Ord.compare(Data_Ord.ordInt)(x.value0)(y.value0);
-            if (v instanceof Data_Ordering.LT) {
-                return Data_Ordering.LT.value;
-            };
-            if (v instanceof Data_Ordering.GT) {
-                return Data_Ordering.GT.value;
-            };
-            return Data_Ord.compare(ordForeignError)(x.value1)(y.value1);
-        };
-        if (x instanceof ErrorAtIndex) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof ErrorAtIndex) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof ErrorAtProperty && y instanceof ErrorAtProperty) {
-            var v = Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
-            if (v instanceof Data_Ordering.LT) {
-                return Data_Ordering.LT.value;
-            };
-            if (v instanceof Data_Ordering.GT) {
-                return Data_Ordering.GT.value;
-            };
-            return Data_Ord.compare(ordForeignError)(x.value1)(y.value1);
-        };
-        if (x instanceof ErrorAtProperty) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof ErrorAtProperty) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof JSONError && y instanceof JSONError) {
-            return Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
-        };
-        throw new Error("Failed pattern match: " + [ x.constructor.name, y.constructor.name ]);
-    };
-});
-module.exports = {
-    ForeignError: ForeignError, 
-    TypeMismatch: TypeMismatch, 
-    ErrorAtIndex: ErrorAtIndex, 
-    ErrorAtProperty: ErrorAtProperty, 
-    JSONError: JSONError, 
-    fail: fail, 
-    readArray: readArray, 
-    readBoolean: readBoolean, 
-    readChar: readChar, 
-    readInt: readInt, 
-    readNull: readNull, 
-    readNullOrUndefined: readNullOrUndefined, 
-    readNumber: readNumber, 
-    readString: readString, 
-    readUndefined: readUndefined, 
-    renderForeignError: renderForeignError, 
-    unsafeReadTagged: unsafeReadTagged, 
-    eqForeignError: eqForeignError, 
-    ordForeignError: ordForeignError, 
-    showForeignError: showForeignError, 
-    isArray: $foreign.isArray, 
-    isNull: $foreign.isNull, 
-    isUndefined: $foreign.isUndefined, 
-    tagOf: $foreign.tagOf, 
-    toForeign: $foreign.toForeign, 
-    typeOf: $foreign.typeOf, 
-    unsafeFromForeign: $foreign.unsafeFromForeign
-};
-
-},{"../Control.Applicative":40,"../Control.Monad.Error.Class":71,"../Control.Monad.Except":73,"../Control.Monad.Except.Trans":72,"../Control.Semigroupoid":92,"../Data.Boolean":129,"../Data.Either":136,"../Data.Eq":138,"../Data.Function":149,"../Data.HeytingAlgebra":160,"../Data.Identity":161,"../Data.Int":165,"../Data.List.NonEmpty":192,"../Data.Maybe":198,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Show":233,"../Data.String":241,"../Prelude":268,"./foreign":144}],146:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Apply = require("../Control.Apply");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Generic = require("../Data.Generic");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_String = require("../Data.String");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Global = require("../Global");
-var Prelude = require("../Prelude");
-var FormURLEncoded = function (x) {
-    return x;
-};
-var toArray = function (v) {
-    return v;
-};
-var showFormUrlEncoded = Data_Show.showArray(Data_Tuple.showTuple(Data_Show.showString)(Data_Maybe.showMaybe(Data_Show.showString)));
-var semigroupFormUrlEncoded = Data_Semigroup.semigroupArray;
-var ordFormUrlEncoded = Data_Ord.ordArray(Data_Tuple.ordTuple(Data_Ord.ordString)(Data_Maybe.ordMaybe(Data_Ord.ordString)));
-var newtypeFormUrlEncoded = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, FormURLEncoded);
-var monoidFormUrlEncoded = Data_Monoid.monoidArray;
-var genericFormUrlEncoded = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.FormURLEncoded.FormURLEncoded" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(FormURLEncoded))(Data_Generic.fromSpine(Data_Generic.genericArray(Data_Generic.genericTuple(Data_Generic.genericString)(Data_Generic.genericMaybe(Data_Generic.genericString))))(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.FormURLEncoded.FormURLEncoded", [ {
-        sigConstructor: "Data.FormURLEncoded.FormURLEncoded", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericArray(Data_Generic.genericTuple(Data_Generic.genericString)(Data_Generic.genericMaybe(Data_Generic.genericString))))(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.FormURLEncoded.FormURLEncoded", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericArray(Data_Generic.genericTuple(Data_Generic.genericString)(Data_Generic.genericMaybe(Data_Generic.genericString))))(v);
-    } ]);
-});
-var fromArray = FormURLEncoded;
-var eqFormUrlEncoded = Data_Eq.eqArray(Data_Tuple.eqTuple(Data_Eq.eqString)(Data_Maybe.eqMaybe(Data_Eq.eqString)));
-var encode = (function () {
-    var encodePart = function (v) {
-        if (v.value1 instanceof Data_Maybe.Nothing) {
-            return Global["encodeURIComponent"](v.value0);
-        };
-        if (v.value1 instanceof Data_Maybe.Just) {
-            return Global["encodeURIComponent"](v.value0) + ("=" + Global["encodeURIComponent"](v.value1.value0));
-        };
-        throw new Error("Failed pattern match at Data.FormURLEncoded line 43, column 5 - line 43, column 56: " + [ v.constructor.name ]);
-    };
-    return function ($21) {
-        return Data_String.joinWith("&")(Data_Functor.map(Data_Functor.functorArray)(encodePart)(toArray($21)));
-    };
-})();
-module.exports = {
-    FormURLEncoded: FormURLEncoded, 
-    encode: encode, 
-    fromArray: fromArray, 
-    toArray: toArray, 
-    genericFormUrlEncoded: genericFormUrlEncoded, 
-    newtypeFormUrlEncoded: newtypeFormUrlEncoded, 
-    eqFormUrlEncoded: eqFormUrlEncoded, 
-    ordFormUrlEncoded: ordFormUrlEncoded, 
-    showFormUrlEncoded: showFormUrlEncoded, 
-    semigroupFormUrlEncoded: semigroupFormUrlEncoded, 
-    monoidFormUrlEncoded: monoidFormUrlEncoded
-};
-
-},{"../Control.Apply":42,"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Functor":155,"../Data.Generic":157,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Data.String":241,"../Data.Tuple":245,"../Data.Unit":249,"../Global":252,"../Prelude":268}],147:[function(require,module,exports){
-"use strict";
-
-// module Data.Function.Uncurried
-
-exports.mkFn0 = function (fn) {
-  return function () {
-    return fn({});
-  };
-};
-
-exports.mkFn2 = function (fn) {
-  /* jshint maxparams: 2 */
-  return function (a, b) {
-    return fn(a)(b);
-  };
-};
-
-exports.mkFn3 = function (fn) {
-  /* jshint maxparams: 3 */
-  return function (a, b, c) {
-    return fn(a)(b)(c);
-  };
-};
-
-exports.mkFn4 = function (fn) {
-  /* jshint maxparams: 4 */
-  return function (a, b, c, d) {
-    return fn(a)(b)(c)(d);
-  };
-};
-
-exports.mkFn5 = function (fn) {
-  /* jshint maxparams: 5 */
-  return function (a, b, c, d, e) {
-    return fn(a)(b)(c)(d)(e);
-  };
-};
-
-exports.mkFn6 = function (fn) {
-  /* jshint maxparams: 6 */
-  return function (a, b, c, d, e, f) {
-    return fn(a)(b)(c)(d)(e)(f);
-  };
-};
-
-exports.mkFn7 = function (fn) {
-  /* jshint maxparams: 7 */
-  return function (a, b, c, d, e, f, g) {
-    return fn(a)(b)(c)(d)(e)(f)(g);
-  };
-};
-
-exports.mkFn8 = function (fn) {
-  /* jshint maxparams: 8 */
-  return function (a, b, c, d, e, f, g, h) {
-    return fn(a)(b)(c)(d)(e)(f)(g)(h);
-  };
-};
-
-exports.mkFn9 = function (fn) {
-  /* jshint maxparams: 9 */
-  return function (a, b, c, d, e, f, g, h, i) {
-    return fn(a)(b)(c)(d)(e)(f)(g)(h)(i);
-  };
-};
-
-exports.mkFn10 = function (fn) {
-  /* jshint maxparams: 10 */
-  return function (a, b, c, d, e, f, g, h, i, j) {
-    return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j);
-  };
-};
-
-exports.runFn0 = function (fn) {
-  return fn();
-};
-
-exports.runFn2 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return fn(a, b);
-    };
-  };
-};
-
-exports.runFn3 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return fn(a, b, c);
-      };
-    };
-  };
-};
-
-exports.runFn4 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return function (d) {
-          return fn(a, b, c, d);
-        };
-      };
-    };
-  };
-};
-
-exports.runFn5 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return function (d) {
-          return function (e) {
-            return fn(a, b, c, d, e);
-          };
-        };
-      };
-    };
-  };
-};
-
-exports.runFn6 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return function (d) {
-          return function (e) {
-            return function (f) {
-              return fn(a, b, c, d, e, f);
-            };
-          };
-        };
-      };
-    };
-  };
-};
-
-exports.runFn7 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return function (d) {
-          return function (e) {
-            return function (f) {
-              return function (g) {
-                return fn(a, b, c, d, e, f, g);
-              };
-            };
-          };
-        };
-      };
-    };
-  };
-};
-
-exports.runFn8 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return function (d) {
-          return function (e) {
-            return function (f) {
-              return function (g) {
-                return function (h) {
-                  return fn(a, b, c, d, e, f, g, h);
-                };
-              };
-            };
-          };
-        };
-      };
-    };
-  };
-};
-
-exports.runFn9 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return function (d) {
-          return function (e) {
-            return function (f) {
-              return function (g) {
-                return function (h) {
-                  return function (i) {
-                    return fn(a, b, c, d, e, f, g, h, i);
-                  };
-                };
-              };
-            };
-          };
-        };
-      };
-    };
-  };
-};
-
-exports.runFn10 = function (fn) {
-  return function (a) {
-    return function (b) {
-      return function (c) {
-        return function (d) {
-          return function (e) {
-            return function (f) {
-              return function (g) {
-                return function (h) {
-                  return function (i) {
-                    return function (j) {
-                      return fn(a, b, c, d, e, f, g, h, i, j);
-                    };
-                  };
-                };
-              };
-            };
-          };
-        };
-      };
-    };
-  };
-};
-
-},{}],148:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Unit = require("../Data.Unit");
-var runFn1 = function (f) {
-    return f;
-};
-var mkFn1 = function (f) {
-    return f;
-};
-module.exports = {
-    mkFn1: mkFn1, 
-    runFn1: runFn1, 
-    mkFn0: $foreign.mkFn0, 
-    mkFn10: $foreign.mkFn10, 
-    mkFn2: $foreign.mkFn2, 
-    mkFn3: $foreign.mkFn3, 
-    mkFn4: $foreign.mkFn4, 
-    mkFn5: $foreign.mkFn5, 
-    mkFn6: $foreign.mkFn6, 
-    mkFn7: $foreign.mkFn7, 
-    mkFn8: $foreign.mkFn8, 
-    mkFn9: $foreign.mkFn9, 
-    runFn0: $foreign.runFn0, 
-    runFn10: $foreign.runFn10, 
-    runFn2: $foreign.runFn2, 
-    runFn3: $foreign.runFn3, 
-    runFn4: $foreign.runFn4, 
-    runFn5: $foreign.runFn5, 
-    runFn6: $foreign.runFn6, 
-    runFn7: $foreign.runFn7, 
-    runFn8: $foreign.runFn8, 
-    runFn9: $foreign.runFn9
-};
-
-},{"../Data.Unit":249,"./foreign":147}],149:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var on = function (f) {
-    return function (g) {
-        return function (x) {
-            return function (y) {
-                return f(g(x))(g(y));
-            };
-        };
-    };
-};
-var flip = function (f) {
-    return function (b) {
-        return function (a) {
-            return f(a)(b);
-        };
-    };
-};
-var $$const = function (a) {
-    return function (v) {
-        return a;
-    };
-};
-var applyFlipped = function (x) {
-    return function (f) {
-        return f(x);
-    };
-};
-var apply = function (f) {
-    return function (x) {
-        return f(x);
-    };
-};
-module.exports = {
-    apply: apply, 
-    applyFlipped: applyFlipped, 
-    "const": $$const, 
-    flip: flip, 
-    on: on
-};
-
-},{"../Control.Category":47}],150:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Lazy = require("../Control.Lazy");
-var Control_Monad = require("../Control.Monad");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_Plus = require("../Control.Plus");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Functor = require("../Data.Functor");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var App = function (x) {
-    return x;
-};
-var traversableApp = function (dictTraversable) {
-    return dictTraversable;
-};
-var showApp = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(App " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var plusApp = function (dictPlus) {
-    return dictPlus;
-};
-var newtypeApp = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, App);
-var monadPlusApp = function (dictMonadPlus) {
-    return dictMonadPlus;
-};
-var monadApp = function (dictMonad) {
-    return dictMonad;
-};
-var lazyApp = function (dictLazy) {
-    return dictLazy;
-};
-var hoistLowerApp = Unsafe_Coerce.unsafeCoerce;
-var hoistLiftApp = Unsafe_Coerce.unsafeCoerce;
-var hoistApp = function (f) {
-    return function (v) {
-        return f(v);
-    };
-};
-var functorApp = function (dictFunctor) {
-    return dictFunctor;
-};
-var foldableApp = function (dictFoldable) {
-    return dictFoldable;
-};
-var extendApp = function (dictExtend) {
-    return dictExtend;
-};
-var eq1App = function (dictEq1) {
-    return new Data_Eq.Eq1(function (dictEq) {
-        return function (v) {
-            return function (v1) {
-                return Data_Eq.eq1(dictEq1)(dictEq)(v)(v1);
-            };
-        };
-    });
-};
-var eqApp = function (dictEq1) {
-    return function (dictEq) {
-        return new Data_Eq.Eq(Data_Eq.eq1(eq1App(dictEq1))(dictEq));
-    };
-};
-var ord1App = function (dictOrd1) {
-    return new Data_Ord.Ord1(function () {
-        return eq1App(dictOrd1.Eq10());
-    }, function (dictOrd) {
-        return function (v) {
-            return function (v1) {
-                return Data_Ord.compare1(dictOrd1)(dictOrd)(v)(v1);
-            };
-        };
-    });
-};
-var ordApp = function (dictOrd1) {
-    return function (dictOrd) {
-        return new Data_Ord.Ord(function () {
-            return eqApp(dictOrd1.Eq10())(dictOrd.Eq0());
-        }, Data_Ord.compare1(ord1App(dictOrd1))(dictOrd));
-    };
-};
-var comonadApp = function (dictComonad) {
-    return dictComonad;
-};
-var bindApp = function (dictBind) {
-    return dictBind;
-};
-var applyApp = function (dictApply) {
-    return dictApply;
-};
-var applicativeApp = function (dictApplicative) {
-    return dictApplicative;
-};
-var alternativeApp = function (dictAlternative) {
-    return dictAlternative;
-};
-var altApp = function (dictAlt) {
-    return dictAlt;
-};
-module.exports = {
-    App: App, 
-    hoistApp: hoistApp, 
-    hoistLiftApp: hoistLiftApp, 
-    hoistLowerApp: hoistLowerApp, 
-    newtypeApp: newtypeApp, 
-    eqApp: eqApp, 
-    eq1App: eq1App, 
-    ordApp: ordApp, 
-    ord1App: ord1App, 
-    showApp: showApp, 
-    functorApp: functorApp, 
-    applyApp: applyApp, 
-    applicativeApp: applicativeApp, 
-    bindApp: bindApp, 
-    monadApp: monadApp, 
-    altApp: altApp, 
-    plusApp: plusApp, 
-    alternativeApp: alternativeApp, 
-    monadPlusApp: monadPlusApp, 
-    lazyApp: lazyApp, 
-    foldableApp: foldableApp, 
-    traversableApp: traversableApp, 
-    extendApp: extendApp, 
-    comonadApp: comonadApp
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Lazy":50,"../Control.Monad":86,"../Control.MonadPlus":87,"../Control.Plus":91,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Functor":155,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Traversable":244,"../Prelude":268,"../Unsafe.Coerce":271}],151:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_App = require("../Data.Functor.App");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var Compose = function (x) {
-    return x;
-};
-var showCompose = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Compose " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var newtypeCompose = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Compose);
-var functorCompose = function (dictFunctor) {
-    return function (dictFunctor1) {
-        return new Data_Functor.Functor(function (f) {
-            return function (v) {
-                return Compose(Data_Functor.map(dictFunctor)(Data_Functor.map(dictFunctor1)(f))(v));
-            };
-        });
-    };
-};
-var foldableCompose = function (dictFoldable) {
-    return function (dictFoldable1) {
-        return new Data_Foldable.Foldable(function (dictMonoid) {
-            return function (f) {
-                return function (v) {
-                    return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(Data_Foldable.foldMap(dictFoldable1)(dictMonoid)(f))(v);
-                };
-            };
-        }, function (f) {
-            return function (i) {
-                return function (v) {
-                    return Data_Foldable.foldl(dictFoldable)(Data_Foldable.foldl(dictFoldable1)(f))(i)(v);
-                };
-            };
-        }, function (f) {
-            return function (i) {
-                return function (v) {
-                    return Data_Foldable.foldr(dictFoldable)(Data_Function.flip(Data_Foldable.foldr(dictFoldable1)(f)))(i)(v);
-                };
-            };
-        });
-    };
-};
-var traversableCompose = function (dictTraversable) {
-    return function (dictTraversable1) {
-        return new Data_Traversable.Traversable(function () {
-            return foldableCompose(dictTraversable.Foldable1())(dictTraversable1.Foldable1());
-        }, function () {
-            return functorCompose(dictTraversable.Functor0())(dictTraversable1.Functor0());
-        }, function (dictApplicative) {
-            return Data_Traversable.traverse(traversableCompose(dictTraversable)(dictTraversable1))(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
-        }, function (dictApplicative) {
-            return function (f) {
-                return function (v) {
-                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Compose)(Data_Traversable.traverse(dictTraversable)(dictApplicative)(Data_Traversable.traverse(dictTraversable1)(dictApplicative)(f))(v));
-                };
-            };
-        });
-    };
-};
-var eq1Compose = function (dictEq1) {
-    return function (dictEq11) {
-        return new Data_Eq.Eq1(function (dictEq) {
-            return function (v) {
-                return function (v1) {
-                    return Data_Eq.eq1(dictEq1)(Data_Functor_App.eqApp(dictEq11)(dictEq))(Data_Functor_App.hoistLiftApp(v))(Data_Functor_App.hoistLiftApp(v1));
-                };
-            };
-        });
-    };
-};
-var eqCompose = function (dictEq1) {
-    return function (dictEq11) {
-        return function (dictEq) {
-            return new Data_Eq.Eq(Data_Eq.eq1(eq1Compose(dictEq1)(dictEq11))(dictEq));
-        };
-    };
-};
-var ord1Compose = function (dictOrd1) {
-    return function (dictOrd11) {
-        return new Data_Ord.Ord1(function () {
-            return eq1Compose(dictOrd1.Eq10())(dictOrd11.Eq10());
-        }, function (dictOrd) {
-            return function (v) {
-                return function (v1) {
-                    return Data_Ord.compare1(dictOrd1)(Data_Functor_App.ordApp(dictOrd11)(dictOrd))(Data_Functor_App.hoistLiftApp(v))(Data_Functor_App.hoistLiftApp(v1));
-                };
-            };
-        });
-    };
-};
-var ordCompose = function (dictOrd1) {
-    return function (dictOrd11) {
-        return function (dictOrd) {
-            return new Data_Ord.Ord(function () {
-                return eqCompose(dictOrd1.Eq10())(dictOrd11.Eq10())(dictOrd.Eq0());
-            }, Data_Ord.compare1(ord1Compose(dictOrd1)(dictOrd11))(dictOrd));
-        };
-    };
-};
-var bihoistCompose = function (dictFunctor) {
-    return function (natF) {
-        return function (natG) {
-            return function (v) {
-                return natF(Data_Functor.map(dictFunctor)(natG)(v));
-            };
-        };
-    };
-};
-var applyCompose = function (dictApply) {
-    return function (dictApply1) {
-        return new Control_Apply.Apply(function () {
-            return functorCompose(dictApply.Functor0())(dictApply1.Functor0());
-        }, function (v) {
-            return function (v1) {
-                return Compose(Control_Apply.apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Control_Apply.apply(dictApply1))(v))(v1));
-            };
-        });
-    };
-};
-var applicativeCompose = function (dictApplicative) {
-    return function (dictApplicative1) {
-        return new Control_Applicative.Applicative(function () {
-            return applyCompose(dictApplicative.Apply0())(dictApplicative1.Apply0());
-        }, function ($75) {
-            return Compose(Control_Applicative.pure(dictApplicative)(Control_Applicative.pure(dictApplicative1)($75)));
-        });
-    };
-};
-var altCompose = function (dictAlt) {
-    return function (dictFunctor) {
-        return new Control_Alt.Alt(function () {
-            return functorCompose(dictAlt.Functor0())(dictFunctor);
-        }, function (v) {
-            return function (v1) {
-                return Compose(Control_Alt.alt(dictAlt)(v)(v1));
-            };
-        });
-    };
-};
-var plusCompose = function (dictPlus) {
-    return function (dictFunctor) {
-        return new Control_Plus.Plus(function () {
-            return altCompose(dictPlus.Alt0())(dictFunctor);
-        }, Control_Plus.empty(dictPlus));
-    };
-};
-var alternativeCompose = function (dictAlternative) {
-    return function (dictApplicative) {
-        return new Control_Alternative.Alternative(function () {
-            return applicativeCompose(dictAlternative.Applicative0())(dictApplicative);
-        }, function () {
-            return plusCompose(dictAlternative.Plus1())((dictApplicative.Apply0()).Functor0());
-        });
-    };
-};
-module.exports = {
-    Compose: Compose, 
-    bihoistCompose: bihoistCompose, 
-    newtypeCompose: newtypeCompose, 
-    eq1Compose: eq1Compose, 
-    eqCompose: eqCompose, 
-    ord1Compose: ord1Compose, 
-    ordCompose: ordCompose, 
-    showCompose: showCompose, 
-    functorCompose: functorCompose, 
-    applyCompose: applyCompose, 
-    applicativeCompose: applicativeCompose, 
-    foldableCompose: foldableCompose, 
-    traversableCompose: traversableCompose, 
-    altCompose: altCompose, 
-    plusCompose: plusCompose, 
-    alternativeCompose: alternativeCompose
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.App":150,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Traversable":244,"../Prelude":268}],152:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Functor = require("../Data.Functor");
-var Data_Void = require("../Data.Void");
-var Prelude = require("../Prelude");
-var Contravariant = function (cmap) {
-    this.cmap = cmap;
-};
-var cmap = function (dict) {
-    return dict.cmap;
-};
-var cmapFlipped = function (dictContravariant) {
-    return function (x) {
-        return function (f) {
-            return cmap(dictContravariant)(f)(x);
-        };
-    };
-};
-var coerce = function (dictContravariant) {
-    return function (dictFunctor) {
-        return function (a) {
-            return Data_Functor.map(dictFunctor)(Data_Void.absurd)(cmap(dictContravariant)(Data_Void.absurd)(a));
-        };
-    };
-};
-module.exports = {
-    Contravariant: Contravariant, 
-    cmap: cmap, 
-    cmapFlipped: cmapFlipped, 
-    coerce: coerce
-};
-
-},{"../Data.Functor":155,"../Data.Void":250,"../Prelude":268}],153:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Functor = require("../Data.Functor");
-var Invariant = function (imap) {
-    this.imap = imap;
-};
-var imapF = function (dictFunctor) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map(dictFunctor)(f);
-        };
-    };
-};
-var invariantArray = new Invariant(imapF(Data_Functor.functorArray));
-var invariantFn = new Invariant(imapF(Data_Functor.functorFn));
-var imap = function (dict) {
-    return dict.imap;
-};
-module.exports = {
-    Invariant: Invariant, 
-    imap: imap, 
-    imapF: imapF, 
-    invariantFn: invariantFn, 
-    invariantArray: invariantArray
-};
-
-},{"../Data.Functor":155}],154:[function(require,module,exports){
-"use strict";
-
-exports.arrayMap = function (f) {
-  return function (arr) {
-    var l = arr.length;
-    var result = new Array(l);
-    for (var i = 0; i < l; i++) {
-      result[i] = f(arr[i]);
-    }
-    return result;
-  };
-};
-
-},{}],155:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Unit = require("../Data.Unit");
-var Functor = function (map) {
-    this.map = map;
-};
-var map = function (dict) {
-    return dict.map;
-};
-var mapFlipped = function (dictFunctor) {
-    return function (fa) {
-        return function (f) {
-            return map(dictFunctor)(f)(fa);
-        };
-    };
-};
-var $$void = function (dictFunctor) {
-    return map(dictFunctor)(Data_Function["const"](Data_Unit.unit));
-};
-var voidLeft = function (dictFunctor) {
-    return function (f) {
-        return function (x) {
-            return map(dictFunctor)(Data_Function["const"](x))(f);
-        };
-    };
-};
-var voidRight = function (dictFunctor) {
-    return function (x) {
-        return map(dictFunctor)(Data_Function["const"](x));
-    };
-};
-var functorFn = new Functor(Control_Semigroupoid.compose(Control_Semigroupoid.semigroupoidFn));
-var functorArray = new Functor($foreign.arrayMap);
-var flap = function (dictFunctor) {
-    return function (ff) {
-        return function (x) {
-            return map(dictFunctor)(function (f) {
-                return f(x);
-            })(ff);
-        };
-    };
-};
-module.exports = {
-    Functor: Functor, 
-    flap: flap, 
-    map: map, 
-    mapFlipped: mapFlipped, 
-    "void": $$void, 
-    voidLeft: voidLeft, 
-    voidRight: voidRight, 
-    functorFn: functorFn, 
-    functorArray: functorArray
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Unit":249,"./foreign":154}],156:[function(require,module,exports){
-"use strict";
-
-// module Data.Generic
-
-exports.zipAll = function (f) {
-  return function (xs) {
-    return function (ys) {
-      var l = xs.length < ys.length ? xs.length : ys.length;
-      for (var i = 0; i < l; i++) {
-        if (!f(xs[i])(ys[i])) {
-          return false;
-        }
-      }
-      return true;
-    };
-  };
-};
-
-exports.zipCompare = function (f) {
-  return function (xs) {
-    return function (ys) {
-      var i = 0;
-      var xlen = xs.length;
-      var ylen = ys.length;
-      while (i < xlen && i < ylen) {
-        var o = f(xs[i])(ys[i]);
-        if (o !== 0) {
-          return o;
-        }
-        i++;
-      }
-      if (xlen === ylen) {
-        return 0;
-      } else if (xlen > ylen) {
-        return -1;
-      } else {
-        return 1;
-      }
-    };
-  };
-};
-
-},{}],157:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Array = require("../Data.Array");
-var Data_Boolean = require("../Data.Boolean");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Identity = require("../Data.Identity");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_NonEmpty = require("../Data.NonEmpty");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_String = require("../Data.String");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Data_Void = require("../Data.Void");
-var Prelude = require("../Prelude");
-var Type_Proxy = require("../Type.Proxy");
-var SProd = (function () {
-    function SProd(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    SProd.create = function (value0) {
-        return function (value1) {
-            return new SProd(value0, value1);
-        };
-    };
-    return SProd;
-})();
-var SRecord = (function () {
-    function SRecord(value0) {
-        this.value0 = value0;
-    };
-    SRecord.create = function (value0) {
-        return new SRecord(value0);
-    };
-    return SRecord;
-})();
-var SNumber = (function () {
-    function SNumber(value0) {
-        this.value0 = value0;
-    };
-    SNumber.create = function (value0) {
-        return new SNumber(value0);
-    };
-    return SNumber;
-})();
-var SBoolean = (function () {
-    function SBoolean(value0) {
-        this.value0 = value0;
-    };
-    SBoolean.create = function (value0) {
-        return new SBoolean(value0);
-    };
-    return SBoolean;
-})();
-var SInt = (function () {
-    function SInt(value0) {
-        this.value0 = value0;
-    };
-    SInt.create = function (value0) {
-        return new SInt(value0);
-    };
-    return SInt;
-})();
-var SString = (function () {
-    function SString(value0) {
-        this.value0 = value0;
-    };
-    SString.create = function (value0) {
-        return new SString(value0);
-    };
-    return SString;
-})();
-var SChar = (function () {
-    function SChar(value0) {
-        this.value0 = value0;
-    };
-    SChar.create = function (value0) {
-        return new SChar(value0);
-    };
-    return SChar;
-})();
-var SArray = (function () {
-    function SArray(value0) {
-        this.value0 = value0;
-    };
-    SArray.create = function (value0) {
-        return new SArray(value0);
-    };
-    return SArray;
-})();
-var SUnit = (function () {
-    function SUnit() {
-
-    };
-    SUnit.value = new SUnit();
-    return SUnit;
-})();
-var SigProd = (function () {
-    function SigProd(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    SigProd.create = function (value0) {
-        return function (value1) {
-            return new SigProd(value0, value1);
-        };
-    };
-    return SigProd;
-})();
-var SigRecord = (function () {
-    function SigRecord(value0) {
-        this.value0 = value0;
-    };
-    SigRecord.create = function (value0) {
-        return new SigRecord(value0);
-    };
-    return SigRecord;
-})();
-var SigNumber = (function () {
-    function SigNumber() {
-
-    };
-    SigNumber.value = new SigNumber();
-    return SigNumber;
-})();
-var SigBoolean = (function () {
-    function SigBoolean() {
-
-    };
-    SigBoolean.value = new SigBoolean();
-    return SigBoolean;
-})();
-var SigInt = (function () {
-    function SigInt() {
-
-    };
-    SigInt.value = new SigInt();
-    return SigInt;
-})();
-var SigString = (function () {
-    function SigString() {
-
-    };
-    SigString.value = new SigString();
-    return SigString;
-})();
-var SigChar = (function () {
-    function SigChar() {
-
-    };
-    SigChar.value = new SigChar();
-    return SigChar;
-})();
-var SigArray = (function () {
-    function SigArray(value0) {
-        this.value0 = value0;
-    };
-    SigArray.create = function (value0) {
-        return new SigArray(value0);
-    };
-    return SigArray;
-})();
-var SigUnit = (function () {
-    function SigUnit() {
-
-    };
-    SigUnit.value = new SigUnit();
-    return SigUnit;
-})();
-var Generic = function (fromSpine, toSignature, toSpine) {
-    this.fromSpine = fromSpine;
-    this.toSignature = toSignature;
-    this.toSpine = toSpine;
-};
-var toSpine = function (dict) {
-    return dict.toSpine;
-};
-var toSignature = function (dict) {
-    return dict.toSignature;
-};
-var showSuspended = function (dictShow) {
-    return function (e) {
-        return "\\_ -> " + Data_Show.show(dictShow)(e(Data_Unit.unit));
-    };
-};
-var showArray = function (v) {
-    return function (v1) {
-        if (v1.length === 0) {
-            return "[]";
-        };
-        return "[ " + (Data_Foldable.intercalate(Data_Foldable.foldableArray)(Data_Monoid.monoidString)(", ")(Data_Functor.map(Data_Functor.functorArray)(v)(v1)) + " ]");
-    };
-};
-var showGenericSpine = new Data_Show.Show(function (v) {
-    if (v instanceof SUnit) {
-        return "SUnit";
-    };
-    if (v instanceof SChar) {
-        return "SChar " + Data_Show.show(Data_Show.showChar)(v.value0);
-    };
-    if (v instanceof SString) {
-        return "SString " + Data_Show.show(Data_Show.showString)(v.value0);
-    };
-    if (v instanceof SBoolean) {
-        return "SBoolean " + Data_Show.show(Data_Show.showBoolean)(v.value0);
-    };
-    if (v instanceof SNumber) {
-        return "SNumber " + Data_Show.show(Data_Show.showNumber)(v.value0);
-    };
-    if (v instanceof SInt) {
-        return "SInt " + Data_Show.show(Data_Show.showInt)(v.value0);
-    };
-    if (v instanceof SArray) {
-        return "SArray " + showArray(showSuspended(showGenericSpine))(v.value0);
-    };
-    if (v instanceof SProd) {
-        return "SProd " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + showArray(showSuspended(showGenericSpine))(v.value1)));
-    };
-    if (v instanceof SRecord) {
-        var showElt = function (v1) {
-            return Data_Foldable.fold(Data_Foldable.foldableArray)(Data_Monoid.monoidString)([ "{ recLabel: ", Data_Show.show(Data_Show.showString)(v1.recLabel), ", recValue: ", showSuspended(showGenericSpine)(v1.recValue), " }" ]);
-        };
-        return "SRecord " + showArray(showElt)(v.value0);
-    };
-    throw new Error("Failed pattern match at Data.Generic line 272, column 9 - line 273, column 9: " + [ v.constructor.name ]);
-});
-var orderingToInt = function (v) {
-    if (v instanceof Data_Ordering.EQ) {
-        return 0;
-    };
-    if (v instanceof Data_Ordering.LT) {
-        return 1;
-    };
-    if (v instanceof Data_Ordering.GT) {
-        return -1 | 0;
-    };
-    throw new Error("Failed pattern match at Data.Generic line 538, column 17 - line 541, column 10: " + [ v.constructor.name ]);
-};
-var genericVoid = new Generic(function (v) {
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return new SigProd("Data.Void.Void", [  ]);
-}, Data_Void.absurd);
-var genericUnit = new Generic(function (v) {
-    if (v instanceof SUnit) {
-        return new Data_Maybe.Just(Data_Unit.unit);
-    };
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return SigUnit.value;
-}, function (v) {
-    return SUnit.value;
-});
-var genericString = new Generic(function (v) {
-    if (v instanceof SString) {
-        return new Data_Maybe.Just(v.value0);
-    };
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return SigString.value;
-}, SString.create);
-var genericOrdering = new Generic(function (v) {
-    if (v instanceof SProd && (v.value0 === "Data.Ordering.LT" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(Data_Ordering.LT.value);
-    };
-    if (v instanceof SProd && (v.value0 === "Data.Ordering.EQ" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(Data_Ordering.EQ.value);
-    };
-    if (v instanceof SProd && (v.value0 === "Data.Ordering.GT" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(Data_Ordering.GT.value);
-    };
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return new SigProd("Data.Ordering.Ordering", [ {
-        sigConstructor: "Data.Ordering.LT", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.Ordering.EQ", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.Ordering.GT", 
-        sigValues: [  ]
-    } ]);
-}, function (v) {
-    if (v instanceof Data_Ordering.LT) {
-        return new SProd("Data.Ordering.LT", [  ]);
-    };
-    if (v instanceof Data_Ordering.EQ) {
-        return new SProd("Data.Ordering.EQ", [  ]);
-    };
-    if (v instanceof Data_Ordering.GT) {
-        return new SProd("Data.Ordering.GT", [  ]);
-    };
-    throw new Error("Failed pattern match at Data.Generic line 218, column 13 - line 221, column 38: " + [ v.constructor.name ]);
-});
-var genericNumber = new Generic(function (v) {
-    if (v instanceof SNumber) {
-        return new Data_Maybe.Just(v.value0);
-    };
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return SigNumber.value;
-}, SNumber.create);
-var genericInt = new Generic(function (v) {
-    if (v instanceof SInt) {
-        return new Data_Maybe.Just(v.value0);
-    };
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return SigInt.value;
-}, SInt.create);
-var genericChar = new Generic(function (v) {
-    if (v instanceof SChar) {
-        return new Data_Maybe.Just(v.value0);
-    };
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return SigChar.value;
-}, SChar.create);
-var genericBool = new Generic(function (v) {
-    if (v instanceof SBoolean) {
-        return new Data_Maybe.Just(v.value0);
-    };
-    return Data_Maybe.Nothing.value;
-}, function (v) {
-    return SigBoolean.value;
-}, SBoolean.create);
-var fromSpine = function (dict) {
-    return dict.fromSpine;
-};
-var force = function (f) {
-    return f(Data_Unit.unit);
-};
-var genericArray = function (dictGeneric) {
-    return new Generic(function (v) {
-        if (v instanceof SArray) {
-            return Data_Traversable.traverse(Data_Traversable.traversableArray)(Data_Maybe.applicativeMaybe)(function ($310) {
-                return fromSpine(dictGeneric)(force($310));
-            })(v.value0);
-        };
-        return Data_Maybe.Nothing.value;
-    }, function (x) {
-        var lowerProxy = function (v) {
-            return Type_Proxy["Proxy"].value;
-        };
-        return new SigArray(function (v) {
-            return toSignature(dictGeneric)(lowerProxy(x));
-        });
-    }, function ($311) {
-        return SArray.create(Data_Functor.map(Data_Functor.functorArray)(function (x) {
-            return function (v) {
-                return toSpine(dictGeneric)(x);
-            };
-        })($311));
-    });
-};
-var genericEither = function (dictGeneric) {
-    return function (dictGeneric1) {
-        return new Generic(function (v) {
-            if (v instanceof SProd && (v.value0 === "Data.Either.Left" && v.value1.length === 1)) {
-                return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Either.Left.create)(fromSpine(dictGeneric)(force(v["value1"][0])));
-            };
-            if (v instanceof SProd && (v.value0 === "Data.Either.Right" && v.value1.length === 1)) {
-                return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Either.Right.create)(fromSpine(dictGeneric1)(force(v["value1"][0])));
-            };
-            return Data_Maybe.Nothing.value;
-        }, function (x) {
-            var rproxy = function (v) {
-                return Type_Proxy["Proxy"].value;
-            };
-            var lproxy = function (v) {
-                return Type_Proxy["Proxy"].value;
-            };
-            return new SigProd("Data.Either.Either", [ {
-                sigConstructor: "Data.Either.Left", 
-                sigValues: [ function (v) {
-                    return toSignature(dictGeneric)(lproxy(x));
-                } ]
-            }, {
-                sigConstructor: "Data.Either.Right", 
-                sigValues: [ function (v) {
-                    return toSignature(dictGeneric1)(rproxy(x));
-                } ]
-            } ]);
-        }, function (v) {
-            if (v instanceof Data_Either.Left) {
-                return new SProd("Data.Either.Left", [ function (v1) {
-                    return toSpine(dictGeneric)(v.value0);
-                } ]);
-            };
-            if (v instanceof Data_Either.Right) {
-                return new SProd("Data.Either.Right", [ function (v1) {
-                    return toSpine(dictGeneric1)(v.value0);
-                } ]);
-            };
-            throw new Error("Failed pattern match at Data.Generic line 181, column 3 - line 181, column 64: " + [ v.constructor.name ]);
-        });
-    };
-};
-var genericIdentity = function (dictGeneric) {
-    return new Generic(function (v) {
-        if (v instanceof SProd && (v.value0 === "Data.Identity.Identity" && v.value1.length === 1)) {
-            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Identity.Identity)(fromSpine(dictGeneric)(force(v["value1"][0])));
-        };
-        return Data_Maybe.Nothing.value;
-    }, function (x) {
-        var iproxy = function (v) {
-            return Type_Proxy["Proxy"].value;
-        };
-        return new SigProd("Data.Identity.Identity", [ {
-            sigConstructor: "Data.Identity.Identity", 
-            sigValues: [ function (v) {
-                return toSignature(dictGeneric)(iproxy(x));
-            } ]
-        } ]);
-    }, function (v) {
-        return new SProd("Data.Identity.Identity", [ function (v1) {
-            return toSpine(dictGeneric)(v);
-        } ]);
-    });
-};
-var genericList = function (dictGeneric) {
-    return new Generic(function (v) {
-        if (v instanceof SProd && (v.value0 === "Data.List.Types.Cons" && v.value1.length === 2)) {
-            return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_List_Types.Cons.create)(fromSpine(dictGeneric)(force(v["value1"][0]))))(fromSpine(genericList(dictGeneric))(force(v["value1"][1])));
-        };
-        if (v instanceof SProd && (v.value0 === "Data.List.Types.Nil" && v.value1.length === 0)) {
-            return Control_Applicative.pure(Data_Maybe.applicativeMaybe)(Data_List_Types.Nil.value);
-        };
-        return Data_Maybe.Nothing.value;
-    }, function (x) {
-        var headProxy = function (v) {
-            return Type_Proxy["Proxy"].value;
-        };
-        return new SigProd("Data.List.Types.List", [ {
-            sigConstructor: "Data.List.Types.Cons", 
-            sigValues: [ function (v) {
-                return toSignature(dictGeneric)(headProxy(x));
-            }, function (v) {
-                return toSignature(genericList(dictGeneric))(x);
-            } ]
-        }, {
-            sigConstructor: "Data.List.Types.Nil", 
-            sigValues: [  ]
-        } ]);
-    }, function (v) {
-        if (v instanceof Data_List_Types.Cons) {
-            return new SProd("Data.List.Types.Cons", [ function (v1) {
-                return toSpine(dictGeneric)(v.value0);
-            }, function (v1) {
-                return toSpine(genericList(dictGeneric))(v.value1);
-            } ]);
-        };
-        if (v instanceof Data_List_Types.Nil) {
-            return new SProd("Data.List.Types.Nil", [  ]);
-        };
-        throw new Error("Failed pattern match at Data.Generic line 117, column 3 - line 118, column 68: " + [ v.constructor.name ]);
-    });
-};
-var genericMaybe = function (dictGeneric) {
-    return new Generic(function (v) {
-        if (v instanceof SProd && (v.value0 === "Data.Maybe.Just" && v.value1.length === 1)) {
-            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Maybe.Just.create)(fromSpine(dictGeneric)(force(v["value1"][0])));
-        };
-        if (v instanceof SProd && (v.value0 === "Data.Maybe.Nothing" && v.value1.length === 0)) {
-            return Control_Applicative.pure(Data_Maybe.applicativeMaybe)(Data_Maybe.Nothing.value);
-        };
-        return Data_Maybe.Nothing.value;
-    }, function (x) {
-        var mbProxy = function (v) {
-            return Type_Proxy["Proxy"].value;
-        };
-        return new SigProd("Data.Maybe.Maybe", [ {
-            sigConstructor: "Data.Maybe.Just", 
-            sigValues: [ function (v) {
-                return toSignature(dictGeneric)(mbProxy(x));
-            } ]
-        }, {
-            sigConstructor: "Data.Maybe.Nothing", 
-            sigValues: [  ]
-        } ]);
-    }, function (v) {
-        if (v instanceof Data_Maybe.Just) {
-            return new SProd("Data.Maybe.Just", [ function (v1) {
-                return toSpine(dictGeneric)(v.value0);
-            } ]);
-        };
-        if (v instanceof Data_Maybe.Nothing) {
-            return new SProd("Data.Maybe.Nothing", [  ]);
-        };
-        throw new Error("Failed pattern match at Data.Generic line 161, column 3 - line 161, column 63: " + [ v.constructor.name ]);
-    });
-};
-var genericNonEmpty = function (dictGeneric) {
-    return function (dictGeneric1) {
-        return new Generic(function (v) {
-            if (v instanceof SProd && (v.value0 === "Data.NonEmpty.NonEmpty" && v.value1.length === 2)) {
-                return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_NonEmpty.NonEmpty.create)(fromSpine(dictGeneric1)(force(v["value1"][0]))))(fromSpine(dictGeneric)(force(v["value1"][1])));
-            };
-            return Data_Maybe.Nothing.value;
-        }, function (x) {
-            var tailProxy = function (v) {
-                return Type_Proxy["Proxy"].value;
-            };
-            var headProxy = function (v) {
-                return Type_Proxy["Proxy"].value;
-            };
-            return new SigProd("Data.NonEmpty.NonEmpty", [ {
-                sigConstructor: "Data.NonEmpty.NonEmpty", 
-                sigValues: [ function (v) {
-                    return toSignature(dictGeneric1)(headProxy(x));
-                }, function (v) {
-                    return toSignature(dictGeneric)(tailProxy(x));
-                } ]
-            } ]);
-        }, function (v) {
-            return new SProd("Data.NonEmpty.NonEmpty", [ function (v1) {
-                return toSpine(dictGeneric1)(v.value0);
-            }, function (v1) {
-                return toSpine(dictGeneric)(v.value1);
-            } ]);
-        });
-    };
-};
-var genericNonEmptyList = function (dictGeneric) {
-    return new Generic(function (v) {
-        if (v instanceof SProd && (v.value0 === "Data.List.Types.NonEmptyList" && v.value1.length === 1)) {
-            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_List_Types.NonEmptyList)(fromSpine(genericNonEmpty(genericList(dictGeneric))(dictGeneric))(force(v["value1"][0])));
-        };
-        return Data_Maybe.Nothing.value;
-    }, function (x) {
-        var listProxy = function (v) {
-            return Type_Proxy["Proxy"].value;
-        };
-        return new SigProd("Data.List.Types.NonEmptyList", [ {
-            sigConstructor: "Data.List.Types.NonEmptyList", 
-            sigValues: [ function (v) {
-                return toSignature(genericList(dictGeneric))(listProxy(x));
-            } ]
-        } ]);
-    }, function (v) {
-        return new SProd("Data.List.Types.NonEmptyList", [ function (v1) {
-            return toSpine(genericNonEmpty(genericList(dictGeneric))(dictGeneric))(v);
-        } ]);
-    });
-};
-var genericShowPrec = function (v) {
-    return function (v1) {
-        if (v1 instanceof SProd) {
-            if (Data_Array["null"](v1.value1)) {
-                return v1.value0;
-            };
-            if (Data_Boolean.otherwise) {
-                var showParen = function (v2) {
-                    return function (x) {
-                        if (!v2) {
-                            return x;
-                        };
-                        if (v2) {
-                            return "(" + (x + ")");
-                        };
-                        throw new Error("Failed pattern match at Data.Generic line 467, column 7 - line 467, column 28: " + [ v2.constructor.name, x.constructor.name ]);
-                    };
-                };
-                return showParen(v > 10)(v1.value0 + (" " + Data_String.joinWith(" ")(Data_Functor.map(Data_Functor.functorArray)(function (x) {
-                    return genericShowPrec(11)(force(x));
-                })(v1.value1))));
-            };
-        };
-        if (v1 instanceof SRecord) {
-            var showLabelPart = function (x) {
-                return x.recLabel + (": " + genericShowPrec(0)(force(x.recValue)));
-            };
-            return "{" + (Data_String.joinWith(", ")(Data_Functor.map(Data_Functor.functorArray)(showLabelPart)(v1.value0)) + "}");
-        };
-        if (v1 instanceof SBoolean) {
-            return Data_Show.show(Data_Show.showBoolean)(v1.value0);
-        };
-        if (v1 instanceof SInt) {
-            return Data_Show.show(Data_Show.showInt)(v1.value0);
-        };
-        if (v1 instanceof SNumber) {
-            return Data_Show.show(Data_Show.showNumber)(v1.value0);
-        };
-        if (v1 instanceof SString) {
-            return Data_Show.show(Data_Show.showString)(v1.value0);
-        };
-        if (v1 instanceof SChar) {
-            return Data_Show.show(Data_Show.showChar)(v1.value0);
-        };
-        if (v1 instanceof SArray) {
-            return "[" + (Data_String.joinWith(", ")(Data_Functor.map(Data_Functor.functorArray)(function (x) {
-                return genericShowPrec(0)(force(x));
-            })(v1.value0)) + "]");
-        };
-        if (v1 instanceof SUnit) {
-            return "unit";
-        };
-        throw new Error("Failed pattern match at Data.Generic line 461, column 1 - line 469, column 1: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-};
-var gShow = function (dictGeneric) {
-    return function ($312) {
-        return genericShowPrec(0)(toSpine(dictGeneric)($312));
-    };
-};
-var genericTuple = function (dictGeneric) {
-    return function (dictGeneric1) {
-        return new Generic(function (v) {
-            if (v instanceof SProd && (v.value0 === "Data.Tuple.Tuple" && v.value1.length === 2)) {
-                return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.Tuple.create)(fromSpine(dictGeneric)(force(v["value1"][0]))))(fromSpine(dictGeneric1)(force(v["value1"][1])));
-            };
-            return Data_Maybe.Nothing.value;
-        }, function (x) {
-            var sndProxy = function (v) {
-                return Type_Proxy["Proxy"].value;
-            };
-            var fstProxy = function (v) {
-                return Type_Proxy["Proxy"].value;
-            };
-            return new SigProd("Data.Tuple.Tuple", [ {
-                sigConstructor: "Data.Tuple.Tuple", 
-                sigValues: [ function (v) {
-                    return toSignature(dictGeneric)(fstProxy(x));
-                }, function (v) {
-                    return toSignature(dictGeneric1)(sndProxy(x));
-                } ]
-            } ]);
-        }, function (v) {
-            return new SProd("Data.Tuple.Tuple", [ function (v1) {
-                return toSpine(dictGeneric)(v.value0);
-            }, function (v1) {
-                return toSpine(dictGeneric1)(v.value1);
-            } ]);
-        });
-    };
-};
-var isValidSpine = function (v) {
-    return function (v1) {
-        if (v instanceof SigBoolean && v1 instanceof SBoolean) {
-            return true;
-        };
-        if (v instanceof SigNumber && v1 instanceof SNumber) {
-            return true;
-        };
-        if (v instanceof SigInt && v1 instanceof SInt) {
-            return true;
-        };
-        if (v instanceof SigString && v1 instanceof SString) {
-            return true;
-        };
-        if (v instanceof SigChar && v1 instanceof SChar) {
-            return true;
-        };
-        if (v instanceof SigArray && v1 instanceof SArray) {
-            return Data_Foldable.all(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(function ($313) {
-                return isValidSpine(force(v.value0))(force($313));
-            })(v1.value0);
-        };
-        if (v instanceof SigProd && v1 instanceof SProd) {
-            var v2 = Data_Foldable.find(Data_Foldable.foldableArray)(function (alt) {
-                return alt.sigConstructor === v1.value0;
-            })(v.value1);
-            if (v2 instanceof Data_Maybe.Nothing) {
-                return false;
-            };
-            if (v2 instanceof Data_Maybe.Just) {
-                return Data_Foldable.and(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Array.zipWith(function (sig) {
-                    return function (spine) {
-                        return isValidSpine(force(sig))(force(spine));
-                    };
-                })(v2.value0.sigValues)(v1.value1));
-            };
-            throw new Error("Failed pattern match at Data.Generic line 438, column 3 - line 444, column 15: " + [ v2.constructor.name ]);
-        };
-        if (v instanceof SigRecord && v1 instanceof SRecord) {
-            return Data_Foldable.and(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Array.zipWith(function (sig) {
-                return function (val) {
-                    return isValidSpine(force(sig.recValue))(force(val.recValue));
-                };
-            })(Data_Array.sortBy(function (a) {
-                return function (b) {
-                    return Data_Ord.compare(Data_Ord.ordString)(a.recLabel)(b.recLabel);
-                };
-            })(v.value0))(Data_Array.sortBy(function (a) {
-                return function (b) {
-                    return Data_Ord.compare(Data_Ord.ordString)(a.recLabel)(b.recLabel);
-                };
-            })(v1.value0)));
-        };
-        if (v instanceof SigUnit && v1 instanceof SUnit) {
-            return true;
-        };
-        return false;
-    };
-};
-var showSignature = function (sig) {
-    var needsParen = function (s) {
-        if (s instanceof SigProd) {
-            return true;
-        };
-        if (s instanceof SigRecord) {
-            return true;
-        };
-        if (s instanceof SigNumber) {
-            return false;
-        };
-        if (s instanceof SigBoolean) {
-            return false;
-        };
-        if (s instanceof SigInt) {
-            return false;
-        };
-        if (s instanceof SigString) {
-            return false;
-        };
-        if (s instanceof SigChar) {
-            return false;
-        };
-        if (s instanceof SigArray) {
-            return true;
-        };
-        if (s instanceof SigUnit) {
-            return false;
-        };
-        throw new Error("Failed pattern match at Data.Generic line 403, column 18 - line 412, column 21: " + [ s.constructor.name ]);
-    };
-    var paren = function (s) {
-        if (needsParen(s)) {
-            return "(" + (showSignature(s) + ")");
-        };
-        if (Data_Boolean.otherwise) {
-            return showSignature(s);
-        };
-        throw new Error("Failed pattern match at Data.Generic line 386, column 3 - line 412, column 21: " + [ s.constructor.name ]);
-    };
-    return Data_Foldable.fold(Data_Foldable.foldableArray)(Data_Monoid.monoidString)((function () {
-        if (sig instanceof SigProd) {
-            return [ "SigProd ", Data_Show.show(Data_Show.showString)(sig.value0), " ", showArray(showDataConstructor)(sig.value1) ];
-        };
-        if (sig instanceof SigRecord) {
-            return [ "SigRecord ", showArray(showLabel)(sig.value0) ];
-        };
-        if (sig instanceof SigNumber) {
-            return [ "SigNumber" ];
-        };
-        if (sig instanceof SigBoolean) {
-            return [ "SigBoolean" ];
-        };
-        if (sig instanceof SigInt) {
-            return [ "SigInt" ];
-        };
-        if (sig instanceof SigString) {
-            return [ "SigString" ];
-        };
-        if (sig instanceof SigChar) {
-            return [ "SigChar" ];
-        };
-        if (sig instanceof SigArray) {
-            return [ "SigArray ", paren(force(sig.value0)) ];
-        };
-        if (sig instanceof SigUnit) {
-            return [ "SigUnit" ];
-        };
-        throw new Error("Failed pattern match at Data.Generic line 386, column 10 - line 396, column 27: " + [ sig.constructor.name ]);
-    })());
-};
-var showLabel = function (l) {
-    return "{ recLabel: " + (Data_Show.show(Data_Show.showString)(l.recLabel) + (", recValue: " + (showSignature(force(l.recValue)) + " }")));
-};
-var showDataConstructor = function (dc) {
-    return "{ sigConstructor: " + (Data_Show.show(Data_Show.showString)(dc.sigConstructor) + (", sigValues: " + (showArray(function ($314) {
-        return showSignature(force($314));
-    })(dc.sigValues) + " }")));
-};
-var showGenericSignature = new Data_Show.Show(showSignature);
-var eqThunk = function (dictEq) {
-    return function (x) {
-        return function (y) {
-            return Data_Eq.eq(dictEq)(force(x))(force(y));
-        };
-    };
-};
-var eqRecordSigs = function (dictEq) {
-    return function (arr1) {
-        return function (arr2) {
-            var labelCompare = function (r1) {
-                return function (r2) {
-                    return Data_Ord.compare(Data_Ord.ordString)(r1.recLabel)(r2.recLabel);
-                };
-            };
-            var sorted1 = Data_Array.sortBy(labelCompare)(arr1);
-            var sorted2 = Data_Array.sortBy(labelCompare)(arr2);
-            var doCmp = function (x) {
-                return function (y) {
-                    return x.recLabel === y.recLabel && Data_Eq.eq(dictEq)(force(x.recValue))(force(y.recValue));
-                };
-            };
-            return Data_Array.length(arr1) === Data_Array.length(arr2) && $foreign.zipAll(doCmp)(sorted1)(sorted2);
-        };
-    };
-};
-var eqGenericSpine = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        if (v instanceof SProd && v1 instanceof SProd) {
-            return v.value0 === v1.value0 && (Data_Array.length(v.value1) === Data_Array.length(v1.value1) && $foreign.zipAll(eqThunk(eqGenericSpine))(v.value1)(v1.value1));
-        };
-        if (v instanceof SRecord && v1 instanceof SRecord) {
-            return eqRecordSigs(eqGenericSpine)(v.value0)(v1.value0);
-        };
-        if (v instanceof SNumber && v1 instanceof SNumber) {
-            return v.value0 === v1.value0;
-        };
-        if (v instanceof SBoolean && v1 instanceof SBoolean) {
-            return v.value0 === v1.value0;
-        };
-        if (v instanceof SInt && v1 instanceof SInt) {
-            return v.value0 === v1.value0;
-        };
-        if (v instanceof SString && v1 instanceof SString) {
-            return v.value0 === v1.value0;
-        };
-        if (v instanceof SChar && v1 instanceof SChar) {
-            return v.value0 === v1.value0;
-        };
-        if (v instanceof SArray && v1 instanceof SArray) {
-            return Data_Array.length(v.value0) === Data_Array.length(v1.value0) && $foreign.zipAll(eqThunk(eqGenericSpine))(v.value0)(v1.value0);
-        };
-        if (v instanceof SUnit && v1 instanceof SUnit) {
-            return true;
-        };
-        return false;
-    };
-});
-var gEq = function (dictGeneric) {
-    return function (x) {
-        return function (y) {
-            return Data_Eq.eq(eqGenericSpine)(toSpine(dictGeneric)(x))(toSpine(dictGeneric)(y));
-        };
-    };
-};
-var eqGenericSignature = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        if (v instanceof SigProd && v1 instanceof SigProd) {
-            return v.value0 === v1.value0 && (Data_Array.length(v.value1) === Data_Array.length(v1.value1) && $foreign.zipAll(eqDataConstructor)(v.value1)(v1.value1));
-        };
-        if (v instanceof SigRecord && v1 instanceof SigRecord) {
-            return eqRecordSigs(eqGenericSignature)(v.value0)(v1.value0);
-        };
-        if (v instanceof SigNumber && v1 instanceof SigNumber) {
-            return true;
-        };
-        if (v instanceof SigBoolean && v1 instanceof SigBoolean) {
-            return true;
-        };
-        if (v instanceof SigInt && v1 instanceof SigInt) {
-            return true;
-        };
-        if (v instanceof SigString && v1 instanceof SigString) {
-            return true;
-        };
-        if (v instanceof SigChar && v1 instanceof SigChar) {
-            return true;
-        };
-        if (v instanceof SigArray && v1 instanceof SigArray) {
-            return eqThunk(eqGenericSignature)(v.value0)(v1.value0);
-        };
-        if (v instanceof SigUnit && v1 instanceof SigUnit) {
-            return true;
-        };
-        return false;
-    };
-});
-var eqDataConstructor = function (p1) {
-    return function (p2) {
-        return p1.sigConstructor === p2.sigConstructor && $foreign.zipAll(eqThunk(eqGenericSignature))(p1.sigValues)(p2.sigValues);
-    };
-};
-var compareThunk = function (dictOrd) {
-    return function (x) {
-        return function (y) {
-            return orderingToInt(Data_Ord.compare(dictOrd)(force(x))(force(y)));
-        };
-    };
-};
-var ordGenericSpine = new Data_Ord.Ord(function () {
-    return eqGenericSpine;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof SProd && v1 instanceof SProd) {
-            var v2 = Data_Ord.compare(Data_Ord.ordString)(v.value0)(v1.value0);
-            if (v2 instanceof Data_Ordering.EQ) {
-                return Data_Ord.compare(Data_Ord.ordInt)(0)($foreign.zipCompare(compareThunk(ordGenericSpine))(v.value1)(v1.value1));
-            };
-            return v2;
-        };
-        if (v instanceof SProd) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SProd) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SRecord && v1 instanceof SRecord) {
-            var go = function (x) {
-                return function (y) {
-                    var v2 = Data_Ord.compare(Data_Ord.ordString)(x.recLabel)(y.recLabel);
-                    if (v2 instanceof Data_Ordering.EQ) {
-                        return orderingToInt(Data_Ord.compare(ordGenericSpine)(force(x.recValue))(force(y.recValue)));
-                    };
-                    return orderingToInt(v2);
-                };
-            };
-            return Data_Ord.compare(Data_Ord.ordInt)(0)($foreign.zipCompare(go)(v.value0)(v1.value0));
-        };
-        if (v instanceof SRecord) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SRecord) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SInt && v1 instanceof SInt) {
-            return Data_Ord.compare(Data_Ord.ordInt)(v.value0)(v1.value0);
-        };
-        if (v instanceof SInt) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SInt) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SBoolean && v1 instanceof SBoolean) {
-            return Data_Ord.compare(Data_Ord.ordBoolean)(v.value0)(v1.value0);
-        };
-        if (v instanceof SBoolean) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SBoolean) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SNumber && v1 instanceof SNumber) {
-            return Data_Ord.compare(Data_Ord.ordNumber)(v.value0)(v1.value0);
-        };
-        if (v instanceof SNumber) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SNumber) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SString && v1 instanceof SString) {
-            return Data_Ord.compare(Data_Ord.ordString)(v.value0)(v1.value0);
-        };
-        if (v instanceof SString) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SString) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SChar && v1 instanceof SChar) {
-            return Data_Ord.compare(Data_Ord.ordChar)(v.value0)(v1.value0);
-        };
-        if (v instanceof SChar) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SChar) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SArray && v1 instanceof SArray) {
-            return Data_Ord.compare(Data_Ord.ordInt)(0)($foreign.zipCompare(compareThunk(ordGenericSpine))(v.value0)(v1.value0));
-        };
-        if (v instanceof SArray) {
-            return Data_Ordering.LT.value;
-        };
-        if (v1 instanceof SArray) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof SUnit && v1 instanceof SUnit) {
-            return Data_Ordering.EQ.value;
-        };
-        throw new Error("Failed pattern match at Data.Generic line 304, column 3 - line 307, column 15: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var gCompare = function (dictGeneric) {
-    return function (x) {
-        return function (y) {
-            return Data_Ord.compare(ordGenericSpine)(toSpine(dictGeneric)(x))(toSpine(dictGeneric)(y));
-        };
-    };
-};
-module.exports = {
-    SigProd: SigProd, 
-    SigRecord: SigRecord, 
-    SigNumber: SigNumber, 
-    SigBoolean: SigBoolean, 
-    SigInt: SigInt, 
-    SigString: SigString, 
-    SigChar: SigChar, 
-    SigArray: SigArray, 
-    SigUnit: SigUnit, 
-    SProd: SProd, 
-    SRecord: SRecord, 
-    SNumber: SNumber, 
-    SBoolean: SBoolean, 
-    SInt: SInt, 
-    SString: SString, 
-    SChar: SChar, 
-    SArray: SArray, 
-    SUnit: SUnit, 
-    Generic: Generic, 
-    fromSpine: fromSpine, 
-    gCompare: gCompare, 
-    gEq: gEq, 
-    gShow: gShow, 
-    isValidSpine: isValidSpine, 
-    showDataConstructor: showDataConstructor, 
-    showSignature: showSignature, 
-    toSignature: toSignature, 
-    toSpine: toSpine, 
-    genericNumber: genericNumber, 
-    genericInt: genericInt, 
-    genericString: genericString, 
-    genericChar: genericChar, 
-    genericBool: genericBool, 
-    genericArray: genericArray, 
-    genericUnit: genericUnit, 
-    genericVoid: genericVoid, 
-    genericTuple: genericTuple, 
-    genericList: genericList, 
-    genericNonEmptyList: genericNonEmptyList, 
-    genericMaybe: genericMaybe, 
-    genericEither: genericEither, 
-    genericIdentity: genericIdentity, 
-    genericOrdering: genericOrdering, 
-    genericNonEmpty: genericNonEmpty, 
-    showGenericSpine: showGenericSpine, 
-    eqGenericSpine: eqGenericSpine, 
-    ordGenericSpine: ordGenericSpine, 
-    eqGenericSignature: eqGenericSignature, 
-    showGenericSignature: showGenericSignature
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Semigroupoid":92,"../Data.Array":119,"../Data.Boolean":129,"../Data.Either":136,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Identity":161,"../Data.List.Types":193,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.NonEmpty":210,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Show":233,"../Data.String":241,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unit":249,"../Data.Void":250,"../Prelude":268,"../Type.Proxy":269,"./foreign":156}],158:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Apply = require("../Control.Apply");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Generic = require("../Data.Generic");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_String = require("../Data.String");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var OPTIONS = (function () {
-    function OPTIONS() {
-
-    };
-    OPTIONS.value = new OPTIONS();
-    return OPTIONS;
-})();
-var GET = (function () {
-    function GET() {
-
-    };
-    GET.value = new GET();
-    return GET;
-})();
-var HEAD = (function () {
-    function HEAD() {
-
-    };
-    HEAD.value = new HEAD();
-    return HEAD;
-})();
-var POST = (function () {
-    function POST() {
-
-    };
-    POST.value = new POST();
-    return POST;
-})();
-var PUT = (function () {
-    function PUT() {
-
-    };
-    PUT.value = new PUT();
-    return PUT;
-})();
-var DELETE = (function () {
-    function DELETE() {
-
-    };
-    DELETE.value = new DELETE();
-    return DELETE;
-})();
-var TRACE = (function () {
-    function TRACE() {
-
-    };
-    TRACE.value = new TRACE();
-    return TRACE;
-})();
-var CONNECT = (function () {
-    function CONNECT() {
-
-    };
-    CONNECT.value = new CONNECT();
-    return CONNECT;
-})();
-var PROPFIND = (function () {
-    function PROPFIND() {
-
-    };
-    PROPFIND.value = new PROPFIND();
-    return PROPFIND;
-})();
-var PROPPATCH = (function () {
-    function PROPPATCH() {
-
-    };
-    PROPPATCH.value = new PROPPATCH();
-    return PROPPATCH;
-})();
-var MKCOL = (function () {
-    function MKCOL() {
-
-    };
-    MKCOL.value = new MKCOL();
-    return MKCOL;
-})();
-var COPY = (function () {
-    function COPY() {
-
-    };
-    COPY.value = new COPY();
-    return COPY;
-})();
-var MOVE = (function () {
-    function MOVE() {
-
-    };
-    MOVE.value = new MOVE();
-    return MOVE;
-})();
-var LOCK = (function () {
-    function LOCK() {
-
-    };
-    LOCK.value = new LOCK();
-    return LOCK;
-})();
-var UNLOCK = (function () {
-    function UNLOCK() {
-
-    };
-    UNLOCK.value = new UNLOCK();
-    return UNLOCK;
-})();
-var PATCH = (function () {
-    function PATCH() {
-
-    };
-    PATCH.value = new PATCH();
-    return PATCH;
-})();
-var CustomMethod = function (x) {
-    return x;
-};
-var unCustomMethod = function (v) {
-    return v;
-};
-var showMethod = new Data_Show.Show(function (v) {
-    if (v instanceof OPTIONS) {
-        return "OPTIONS";
-    };
-    if (v instanceof GET) {
-        return "GET";
-    };
-    if (v instanceof HEAD) {
-        return "HEAD";
-    };
-    if (v instanceof POST) {
-        return "POST";
-    };
-    if (v instanceof PUT) {
-        return "PUT";
-    };
-    if (v instanceof DELETE) {
-        return "DELETE";
-    };
-    if (v instanceof TRACE) {
-        return "TRACE";
-    };
-    if (v instanceof CONNECT) {
-        return "CONNECT";
-    };
-    if (v instanceof PROPFIND) {
-        return "PROPFIND";
-    };
-    if (v instanceof PROPPATCH) {
-        return "PROPPATCH";
-    };
-    if (v instanceof MKCOL) {
-        return "MKCOL";
-    };
-    if (v instanceof COPY) {
-        return "COPY";
-    };
-    if (v instanceof MOVE) {
-        return "MOVE";
-    };
-    if (v instanceof LOCK) {
-        return "LOCK";
-    };
-    if (v instanceof UNLOCK) {
-        return "UNLOCK";
-    };
-    if (v instanceof PATCH) {
-        return "PATCH";
-    };
-    throw new Error("Failed pattern match at Data.HTTP.Method line 43, column 3 - line 44, column 3: " + [ v.constructor.name ]);
-});
-var showCustomMethod = new Data_Show.Show(function (v) {
-    return "(CustomMethod " + (Data_Show.show(Data_Show.showString)(v) + ")");
-});
-var print = Data_Either.either(Data_Show.show(showMethod))(unCustomMethod);
-var genericMethod = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.OPTIONS" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(OPTIONS.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.GET" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(GET.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.HEAD" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(HEAD.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.POST" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(POST.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PUT" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(PUT.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.DELETE" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(DELETE.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.TRACE" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(TRACE.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.CONNECT" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(CONNECT.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PROPFIND" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(PROPFIND.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PROPPATCH" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(PROPPATCH.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.MKCOL" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(MKCOL.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.COPY" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(COPY.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.MOVE" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(MOVE.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.LOCK" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(LOCK.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.UNLOCK" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(UNLOCK.value);
-    };
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PATCH" && v.value1.length === 0)) {
-        return new Data_Maybe.Just(PATCH.value);
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.HTTP.Method.Method", [ {
-        sigConstructor: "Data.HTTP.Method.OPTIONS", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.GET", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.HEAD", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.POST", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.PUT", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.DELETE", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.TRACE", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.CONNECT", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.PROPFIND", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.PROPPATCH", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.MKCOL", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.COPY", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.MOVE", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.LOCK", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.UNLOCK", 
-        sigValues: [  ]
-    }, {
-        sigConstructor: "Data.HTTP.Method.PATCH", 
-        sigValues: [  ]
-    } ]);
-}, function (v) {
-    if (v instanceof OPTIONS) {
-        return new Data_Generic.SProd("Data.HTTP.Method.OPTIONS", [  ]);
-    };
-    if (v instanceof GET) {
-        return new Data_Generic.SProd("Data.HTTP.Method.GET", [  ]);
-    };
-    if (v instanceof HEAD) {
-        return new Data_Generic.SProd("Data.HTTP.Method.HEAD", [  ]);
-    };
-    if (v instanceof POST) {
-        return new Data_Generic.SProd("Data.HTTP.Method.POST", [  ]);
-    };
-    if (v instanceof PUT) {
-        return new Data_Generic.SProd("Data.HTTP.Method.PUT", [  ]);
-    };
-    if (v instanceof DELETE) {
-        return new Data_Generic.SProd("Data.HTTP.Method.DELETE", [  ]);
-    };
-    if (v instanceof TRACE) {
-        return new Data_Generic.SProd("Data.HTTP.Method.TRACE", [  ]);
-    };
-    if (v instanceof CONNECT) {
-        return new Data_Generic.SProd("Data.HTTP.Method.CONNECT", [  ]);
-    };
-    if (v instanceof PROPFIND) {
-        return new Data_Generic.SProd("Data.HTTP.Method.PROPFIND", [  ]);
-    };
-    if (v instanceof PROPPATCH) {
-        return new Data_Generic.SProd("Data.HTTP.Method.PROPPATCH", [  ]);
-    };
-    if (v instanceof MKCOL) {
-        return new Data_Generic.SProd("Data.HTTP.Method.MKCOL", [  ]);
-    };
-    if (v instanceof COPY) {
-        return new Data_Generic.SProd("Data.HTTP.Method.COPY", [  ]);
-    };
-    if (v instanceof MOVE) {
-        return new Data_Generic.SProd("Data.HTTP.Method.MOVE", [  ]);
-    };
-    if (v instanceof LOCK) {
-        return new Data_Generic.SProd("Data.HTTP.Method.LOCK", [  ]);
-    };
-    if (v instanceof UNLOCK) {
-        return new Data_Generic.SProd("Data.HTTP.Method.UNLOCK", [  ]);
-    };
-    if (v instanceof PATCH) {
-        return new Data_Generic.SProd("Data.HTTP.Method.PATCH", [  ]);
-    };
-    throw new Error("Failed pattern match at Data.HTTP.Method line 40, column 1 - line 40, column 48: " + [ v.constructor.name ]);
-});
-var genericCustomMethod = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.CustomMethod" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(CustomMethod))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.HTTP.Method.CustomMethod", [ {
-        sigConstructor: "Data.HTTP.Method.CustomMethod", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.HTTP.Method.CustomMethod", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericString)(v);
-    } ]);
-});
-var fromString = function (s) {
-    var v = Data_String.toUpper(s);
-    if (v === "OPTIONS") {
-        return new Data_Either.Left(OPTIONS.value);
-    };
-    if (v === "GET") {
-        return new Data_Either.Left(GET.value);
-    };
-    if (v === "HEAD") {
-        return new Data_Either.Left(HEAD.value);
-    };
-    if (v === "POST") {
-        return new Data_Either.Left(POST.value);
-    };
-    if (v === "PUT") {
-        return new Data_Either.Left(PUT.value);
-    };
-    if (v === "DELETE") {
-        return new Data_Either.Left(DELETE.value);
-    };
-    if (v === "TRACE") {
-        return new Data_Either.Left(TRACE.value);
-    };
-    if (v === "CONNECT") {
-        return new Data_Either.Left(CONNECT.value);
-    };
-    if (v === "PROPFIND") {
-        return new Data_Either.Left(PROPFIND.value);
-    };
-    if (v === "PROPPATCH") {
-        return new Data_Either.Left(PROPPATCH.value);
-    };
-    if (v === "MKCOL") {
-        return new Data_Either.Left(MKCOL.value);
-    };
-    if (v === "COPY") {
-        return new Data_Either.Left(COPY.value);
-    };
-    if (v === "MOVE") {
-        return new Data_Either.Left(MOVE.value);
-    };
-    if (v === "LOCK") {
-        return new Data_Either.Left(LOCK.value);
-    };
-    if (v === "UNLOCK") {
-        return new Data_Either.Left(UNLOCK.value);
-    };
-    return new Data_Either.Right(v);
-};
-var eqMethod = new Data_Eq.Eq(function (x) {
-    return function (y) {
-        if (x instanceof OPTIONS && y instanceof OPTIONS) {
-            return true;
-        };
-        if (x instanceof GET && y instanceof GET) {
-            return true;
-        };
-        if (x instanceof HEAD && y instanceof HEAD) {
-            return true;
-        };
-        if (x instanceof POST && y instanceof POST) {
-            return true;
-        };
-        if (x instanceof PUT && y instanceof PUT) {
-            return true;
-        };
-        if (x instanceof DELETE && y instanceof DELETE) {
-            return true;
-        };
-        if (x instanceof TRACE && y instanceof TRACE) {
-            return true;
-        };
-        if (x instanceof CONNECT && y instanceof CONNECT) {
-            return true;
-        };
-        if (x instanceof PROPFIND && y instanceof PROPFIND) {
-            return true;
-        };
-        if (x instanceof PROPPATCH && y instanceof PROPPATCH) {
-            return true;
-        };
-        if (x instanceof MKCOL && y instanceof MKCOL) {
-            return true;
-        };
-        if (x instanceof COPY && y instanceof COPY) {
-            return true;
-        };
-        if (x instanceof MOVE && y instanceof MOVE) {
-            return true;
-        };
-        if (x instanceof LOCK && y instanceof LOCK) {
-            return true;
-        };
-        if (x instanceof UNLOCK && y instanceof UNLOCK) {
-            return true;
-        };
-        if (x instanceof PATCH && y instanceof PATCH) {
-            return true;
-        };
-        return false;
-    };
-});
-var ordMethod = new Data_Ord.Ord(function () {
-    return eqMethod;
-}, function (x) {
-    return function (y) {
-        if (x instanceof OPTIONS && y instanceof OPTIONS) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof OPTIONS) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof OPTIONS) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof GET && y instanceof GET) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof GET) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof GET) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof HEAD && y instanceof HEAD) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof HEAD) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof HEAD) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof POST && y instanceof POST) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof POST) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof POST) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof PUT && y instanceof PUT) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof PUT) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof PUT) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof DELETE && y instanceof DELETE) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof DELETE) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof DELETE) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof TRACE && y instanceof TRACE) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof TRACE) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof TRACE) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof CONNECT && y instanceof CONNECT) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof CONNECT) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof CONNECT) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof PROPFIND && y instanceof PROPFIND) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof PROPFIND) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof PROPFIND) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof PROPPATCH && y instanceof PROPPATCH) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof PROPPATCH) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof PROPPATCH) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof MKCOL && y instanceof MKCOL) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof MKCOL) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof MKCOL) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof COPY && y instanceof COPY) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof COPY) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof COPY) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof MOVE && y instanceof MOVE) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof MOVE) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof MOVE) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof LOCK && y instanceof LOCK) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof LOCK) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof LOCK) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof UNLOCK && y instanceof UNLOCK) {
-            return Data_Ordering.EQ.value;
-        };
-        if (x instanceof UNLOCK) {
-            return Data_Ordering.LT.value;
-        };
-        if (y instanceof UNLOCK) {
-            return Data_Ordering.GT.value;
-        };
-        if (x instanceof PATCH && y instanceof PATCH) {
-            return Data_Ordering.EQ.value;
-        };
-        throw new Error("Failed pattern match at Data.HTTP.Method line 39, column 1 - line 39, column 40: " + [ x.constructor.name, y.constructor.name ]);
-    };
-});
-var eqCustomMethod = new Data_Eq.Eq(function (x) {
-    return function (y) {
-        return x === y;
-    };
-});
-var ordCustomMethod = new Data_Ord.Ord(function () {
-    return eqCustomMethod;
-}, function (x) {
-    return function (y) {
-        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
-    };
-});
-module.exports = {
-    OPTIONS: OPTIONS, 
-    GET: GET, 
-    HEAD: HEAD, 
-    POST: POST, 
-    PUT: PUT, 
-    DELETE: DELETE, 
-    TRACE: TRACE, 
-    CONNECT: CONNECT, 
-    PROPFIND: PROPFIND, 
-    PROPPATCH: PROPPATCH, 
-    MKCOL: MKCOL, 
-    COPY: COPY, 
-    MOVE: MOVE, 
-    LOCK: LOCK, 
-    UNLOCK: UNLOCK, 
-    PATCH: PATCH, 
-    fromString: fromString, 
-    print: print, 
-    unCustomMethod: unCustomMethod, 
-    eqMethod: eqMethod, 
-    ordMethod: ordMethod, 
-    genericMethod: genericMethod, 
-    showMethod: showMethod, 
-    eqCustomMethod: eqCustomMethod, 
-    ordCustomMethod: ordCustomMethod, 
-    genericCustomMethod: genericCustomMethod, 
-    showCustomMethod: showCustomMethod
-};
-
-},{"../Control.Apply":42,"../Data.Either":136,"../Data.Eq":138,"../Data.Generic":157,"../Data.Maybe":198,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Show":233,"../Data.String":241,"../Data.Unit":249,"../Prelude":268}],159:[function(require,module,exports){
-"use strict";
-
-exports.boolConj = function (b1) {
-  return function (b2) {
-    return b1 && b2;
-  };
-};
-
-exports.boolDisj = function (b1) {
-  return function (b2) {
-    return b1 || b2;
-  };
-};
-
-exports.boolNot = function (b) {
-  return !b;
-};
-
-},{}],160:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Unit = require("../Data.Unit");
-var HeytingAlgebra = function (conj, disj, ff, implies, not, tt) {
-    this.conj = conj;
-    this.disj = disj;
-    this.ff = ff;
-    this.implies = implies;
-    this.not = not;
-    this.tt = tt;
-};
-var tt = function (dict) {
-    return dict.tt;
-};
-var not = function (dict) {
-    return dict.not;
-};
-var implies = function (dict) {
-    return dict.implies;
-};
-var heytingAlgebraUnit = new HeytingAlgebra(function (v) {
-    return function (v1) {
-        return Data_Unit.unit;
-    };
-}, function (v) {
-    return function (v1) {
-        return Data_Unit.unit;
-    };
-}, Data_Unit.unit, function (v) {
-    return function (v1) {
-        return Data_Unit.unit;
-    };
-}, function (v) {
-    return Data_Unit.unit;
-}, Data_Unit.unit);
-var ff = function (dict) {
-    return dict.ff;
-};
-var disj = function (dict) {
-    return dict.disj;
-};
-var heytingAlgebraBoolean = new HeytingAlgebra($foreign.boolConj, $foreign.boolDisj, false, function (a) {
-    return function (b) {
-        return disj(heytingAlgebraBoolean)(not(heytingAlgebraBoolean)(a))(b);
-    };
-}, $foreign.boolNot, true);
-var conj = function (dict) {
-    return dict.conj;
-};
-var heytingAlgebraFunction = function (dictHeytingAlgebra) {
-    return new HeytingAlgebra(function (f) {
-        return function (g) {
-            return function (a) {
-                return conj(dictHeytingAlgebra)(f(a))(g(a));
-            };
-        };
-    }, function (f) {
-        return function (g) {
-            return function (a) {
-                return disj(dictHeytingAlgebra)(f(a))(g(a));
-            };
-        };
-    }, function (v) {
-        return ff(dictHeytingAlgebra);
-    }, function (f) {
-        return function (g) {
-            return function (a) {
-                return implies(dictHeytingAlgebra)(f(a))(g(a));
-            };
-        };
-    }, function (f) {
-        return function (a) {
-            return not(dictHeytingAlgebra)(f(a));
-        };
-    }, function (v) {
-        return tt(dictHeytingAlgebra);
-    });
-};
-module.exports = {
-    HeytingAlgebra: HeytingAlgebra, 
-    conj: conj, 
-    disj: disj, 
-    ff: ff, 
-    implies: implies, 
-    not: not, 
-    tt: tt, 
-    heytingAlgebraBoolean: heytingAlgebraBoolean, 
-    heytingAlgebraUnit: heytingAlgebraUnit, 
-    heytingAlgebraFunction: heytingAlgebraFunction
-};
-
-},{"../Data.Unit":249,"./foreign":159}],161:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Lazy = require("../Control.Lazy");
-var Control_Monad = require("../Control.Monad");
-var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
-var Data_Bounded = require("../Data.Bounded");
-var Data_CommutativeRing = require("../Data.CommutativeRing");
-var Data_Eq = require("../Data.Eq");
-var Data_EuclideanRing = require("../Data.EuclideanRing");
-var Data_Field = require("../Data.Field");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var Identity = function (x) {
-    return x;
-};
-var showIdentity = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Identity " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var semiringIdentity = function (dictSemiring) {
-    return dictSemiring;
-};
-var semigroupIdenity = function (dictSemigroup) {
-    return dictSemigroup;
-};
-var ringIdentity = function (dictRing) {
-    return dictRing;
-};
-var ordIdentity = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeIdentity = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Identity);
-var monoidIdentity = function (dictMonoid) {
-    return dictMonoid;
-};
-var lazyIdentity = function (dictLazy) {
-    return dictLazy;
-};
-var heytingAlgebraIdentity = function (dictHeytingAlgebra) {
-    return dictHeytingAlgebra;
-};
-var functorIdentity = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return f(v);
-    };
-});
-var invariantIdentity = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorIdentity));
-var foldableIdentity = new Data_Foldable.Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return f(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(z)(v);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(v)(z);
-        };
-    };
-});
-var traversableIdentity = new Data_Traversable.Traversable(function () {
-    return foldableIdentity;
-}, function () {
-    return functorIdentity;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Identity)(v);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Identity)(f(v));
-        };
-    };
-});
-var fieldIdentity = function (dictField) {
-    return dictField;
-};
-var extendIdentity = new Control_Extend.Extend(function () {
-    return functorIdentity;
-}, function (f) {
-    return function (m) {
-        return f(m);
-    };
-});
-var euclideanRingIdentity = function (dictEuclideanRing) {
-    return dictEuclideanRing;
-};
-var eqIdentity = function (dictEq) {
-    return dictEq;
-};
-var comonadIdentity = new Control_Comonad.Comonad(function () {
-    return extendIdentity;
-}, function (v) {
-    return v;
-});
-var commutativeRingIdentity = function (dictCommutativeRing) {
-    return dictCommutativeRing;
-};
-var boundedIdentity = function (dictBounded) {
-    return dictBounded;
-};
-var booleanAlgebraIdentity = function (dictBooleanAlgebra) {
-    return dictBooleanAlgebra;
-};
-var applyIdentity = new Control_Apply.Apply(function () {
-    return functorIdentity;
-}, function (v) {
-    return function (v1) {
-        return v(v1);
-    };
-});
-var bindIdentity = new Control_Bind.Bind(function () {
-    return applyIdentity;
-}, function (v) {
-    return function (f) {
-        return f(v);
-    };
-});
-var applicativeIdentity = new Control_Applicative.Applicative(function () {
-    return applyIdentity;
-}, Identity);
-var monadIdentity = new Control_Monad.Monad(function () {
-    return applicativeIdentity;
-}, function () {
-    return bindIdentity;
-});
-var altIdentity = new Control_Alt.Alt(function () {
-    return functorIdentity;
-}, function (x) {
-    return function (v) {
-        return x;
-    };
-});
-module.exports = {
-    Identity: Identity, 
-    newtypeIdentity: newtypeIdentity, 
-    eqIdentity: eqIdentity, 
-    ordIdentity: ordIdentity, 
-    boundedIdentity: boundedIdentity, 
-    heytingAlgebraIdentity: heytingAlgebraIdentity, 
-    booleanAlgebraIdentity: booleanAlgebraIdentity, 
-    semigroupIdenity: semigroupIdenity, 
-    monoidIdentity: monoidIdentity, 
-    semiringIdentity: semiringIdentity, 
-    euclideanRingIdentity: euclideanRingIdentity, 
-    ringIdentity: ringIdentity, 
-    commutativeRingIdentity: commutativeRingIdentity, 
-    fieldIdentity: fieldIdentity, 
-    lazyIdentity: lazyIdentity, 
-    showIdentity: showIdentity, 
-    functorIdentity: functorIdentity, 
-    invariantIdentity: invariantIdentity, 
-    altIdentity: altIdentity, 
-    applyIdentity: applyIdentity, 
-    applicativeIdentity: applicativeIdentity, 
-    bindIdentity: bindIdentity, 
-    monadIdentity: monadIdentity, 
-    extendIdentity: extendIdentity, 
-    comonadIdentity: comonadIdentity, 
-    foldableIdentity: foldableIdentity, 
-    traversableIdentity: traversableIdentity
-};
-
-},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Lazy":50,"../Control.Monad":86,"../Data.BooleanAlgebra":130,"../Data.Bounded":132,"../Data.CommutativeRing":133,"../Data.Eq":138,"../Data.EuclideanRing":140,"../Data.Field":141,"../Data.Foldable":143,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.HeytingAlgebra":160,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.Traversable":244,"../Prelude":268}],162:[function(require,module,exports){
-"use strict";
-
-// module Data.Int.Bits
-
-exports.and = function (n1) {
-  return function (n2) {
-    /* jshint bitwise: false */
-    return n1 & n2;
-  };
-};
-
-exports.or = function (n1) {
-  return function (n2) {
-    /* jshint bitwise: false */
-    return n1 | n2;
-  };
-};
-
-exports.xor = function (n1) {
-  return function (n2) {
-    /* jshint bitwise: false */
-    return n1 ^ n2;
-  };
-};
-
-exports.shl = function (n1) {
-  return function (n2) {
-    /* jshint bitwise: false */
-    return n1 << n2;
-  };
-};
-
-exports.shr = function (n1) {
-  return function (n2) {
-    /* jshint bitwise: false */
-    return n1 >> n2;
-  };
-};
-
-exports.zshr = function (n1) {
-  return function (n2) {
-    /* jshint bitwise: false */
-    return n1 >>> n2;
-  };
-};
-
-exports.complement = function (n) {
-  /* jshint bitwise: false */
-  return ~n;
-};
-
-},{}],163:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-module.exports = {
-    and: $foreign.and, 
-    complement: $foreign.complement, 
-    or: $foreign.or, 
-    shl: $foreign.shl, 
-    shr: $foreign.shr, 
-    xor: $foreign.xor, 
-    zshr: $foreign.zshr
-};
-
-},{"./foreign":162}],164:[function(require,module,exports){
-"use strict";
-
-// module Data.Int
-
-exports.fromNumberImpl = function (just) {
-  return function (nothing) {
-    return function (n) {
-      /* jshint bitwise: false */
-      return (n | 0) === n ? just(n) : nothing;
-    };
-  };
-};
-
-exports.toNumber = function (n) {
-  return n;
-};
-
-exports.fromStringAsImpl = function (just) {
-  return function (nothing) {
-    return function (radix) {
-      var digits;
-      if (radix < 11) {
-        digits = "[0-" + (radix - 1).toString() + "]";
-      } else if (radix === 11) {
-        digits = "[0-9a]";
-      } else {
-        digits = "[0-9a-" + String.fromCharCode(86 + radix) + "]";
-      }
-      var pattern = new RegExp("^[\\+\\-]?" + digits + "+$", "i");
-
-      return function (s) {
-        /* jshint bitwise: false */
-        if (pattern.test(s)) {
-          var i = parseInt(s, radix);
-          return (i | 0) === i ? just(i) : nothing;
-        } else {
-          return nothing;
-        }
-      };
-    };
-  };
-};
-
-exports.toStringAs = function (radix) {
-  return function (i) {
-    return i.toString(radix);
-  };
-};
-
-exports.pow = function (x) {
-  return function (y) {
-    /* jshint bitwise: false */
-    return Math.pow(x,y) | 0;
-  };
-};
-
-},{}],165:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Boolean = require("../Data.Boolean");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Int_Bits = require("../Data.Int.Bits");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Ord = require("../Data.Ord");
-var Data_Ring = require("../Data.Ring");
-var Global = require("../Global");
-var $$Math = require("../Math");
-var Prelude = require("../Prelude");
-var Radix = function (x) {
-    return x;
-};
-var radix = function (n) {
-    if (n >= 2 && n <= 36) {
-        return new Data_Maybe.Just(n);
-    };
-    if (Data_Boolean.otherwise) {
-        return Data_Maybe.Nothing.value;
-    };
-    throw new Error("Failed pattern match at Data.Int line 124, column 1 - line 125, column 38: " + [ n.constructor.name ]);
-};
-var odd = function (x) {
-    return (x & 1) !== 0;
-};
-var octal = 8;
-var hexadecimal = 16;
-var fromStringAs = $foreign.fromStringAsImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var fromString = fromStringAs(10);
-var fromNumber = $foreign.fromNumberImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var unsafeClamp = function (x) {
-    if (x === Global.infinity) {
-        return 0;
-    };
-    if (x === -Global.infinity) {
-        return 0;
-    };
-    if (x >= $foreign.toNumber(Data_Bounded.top(Data_Bounded.boundedInt))) {
-        return Data_Bounded.top(Data_Bounded.boundedInt);
-    };
-    if (x <= $foreign.toNumber(Data_Bounded.bottom(Data_Bounded.boundedInt))) {
-        return Data_Bounded.bottom(Data_Bounded.boundedInt);
-    };
-    if (Data_Boolean.otherwise) {
-        return Data_Maybe.fromMaybe(0)(fromNumber(x));
-    };
-    throw new Error("Failed pattern match at Data.Int line 63, column 1 - line 68, column 43: " + [ x.constructor.name ]);
-};
-var round = function ($2) {
-    return unsafeClamp($$Math.round($2));
-};
-var floor = function ($3) {
-    return unsafeClamp($$Math.floor($3));
-};
-var even = function (x) {
-    return (x & 1) === 0;
-};
-var decimal = 10;
-var ceil = function ($4) {
-    return unsafeClamp($$Math.ceil($4));
-};
-var binary = 2;
-var base36 = 36;
-module.exports = {
-    base36: base36, 
-    binary: binary, 
-    ceil: ceil, 
-    decimal: decimal, 
-    even: even, 
-    floor: floor, 
-    fromNumber: fromNumber, 
-    fromString: fromString, 
-    fromStringAs: fromStringAs, 
-    hexadecimal: hexadecimal, 
-    octal: octal, 
-    odd: odd, 
-    radix: radix, 
-    round: round, 
-    pow: $foreign.pow, 
-    toNumber: $foreign.toNumber, 
-    toStringAs: $foreign.toStringAs
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Boolean":129,"../Data.Bounded":132,"../Data.Eq":138,"../Data.HeytingAlgebra":160,"../Data.Int.Bits":163,"../Data.Maybe":198,"../Data.Ord":216,"../Data.Ring":227,"../Global":252,"../Math":256,"../Prelude":268,"./foreign":164}],166:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Lens_Lens_Tuple = require("../Data.Lens.Lens.Tuple");
-var Data_Lens_Lens_Unit = require("../Data.Lens.Lens.Unit");
-var Data_Lens_Prism_Either = require("../Data.Lens.Prism.Either");
-var Data_Lens_Prism_Maybe = require("../Data.Lens.Prism.Maybe");
-module.exports = {};
-
-},{"../Data.Lens.Lens.Tuple":182,"../Data.Lens.Lens.Unit":183,"../Data.Lens.Prism.Either":185,"../Data.Lens.Prism.Maybe":186}],167:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Lens_Internal_Forget = require("../Data.Lens.Internal.Forget");
-var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_List = require("../Data.List");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Maybe_First = require("../Data.Maybe.First");
-var Data_Maybe_Last = require("../Data.Maybe.Last");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Monoid_Additive = require("../Data.Monoid.Additive");
-var Data_Monoid_Conj = require("../Data.Monoid.Conj");
-var Data_Monoid_Disj = require("../Data.Monoid.Disj");
-var Data_Monoid_Dual = require("../Data.Monoid.Dual");
-var Data_Monoid_Endo = require("../Data.Monoid.Endo");
-var Data_Monoid_Multiplicative = require("../Data.Monoid.Multiplicative");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var unfolded = function (dictMonoid) {
-    return function (f) {
-        return function (p) {
-            var go = function ($42) {
-                return Data_Maybe.maybe(Data_Monoid.mempty(dictMonoid))(function (v) {
-                    return Data_Semigroup.append(dictMonoid.Semigroup0())(Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(p)(v.value0))(go(v.value1));
-                })(f($42));
-            };
-            return go;
-        };
-    };
-};
-var replicated = function (dictMonoid) {
-    return function (i) {
-        return function (v) {
-            var go = function (v1) {
-                return function (x) {
-                    if (v1 === 0) {
-                        return Data_Monoid.mempty(Data_Monoid.monoidFn(dictMonoid));
-                    };
-                    return Data_Semigroup.append(Data_Semigroup.semigroupFn(dictMonoid.Semigroup0()))(x)(go(v1 - 1 | 0)(x));
-                };
-            };
-            return go(i)(v);
-        };
-    };
-};
-var ifoldMapOf = function (p) {
-    return function (f) {
-        return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(p(Data_Lens_Internal_Indexed.Indexed(Data_Tuple.uncurry(f))));
-    };
-};
-var ifoldlOf = function (p) {
-    return function (f) {
-        return function (r) {
-            return function ($43) {
-                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(ifoldMapOf(p)(function (i) {
-                    return function ($44) {
-                        return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(f(i))($44)));
-                    };
-                })($43)));
-            };
-        };
-    };
-};
-var ifoldrOf = function (p) {
-    return function (f) {
-        return function (r) {
-            return function ($45) {
-                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(ifoldMapOf(p)(function (i) {
-                    return function ($46) {
-                        return Data_Monoid_Endo.Endo(f(i)($46));
-                    };
-                })($45));
-            };
-        };
-    };
-};
-var itoListOf = function (p) {
-    return ifoldrOf(p)(function (i) {
-        return function (x) {
-            return function (xs) {
-                return new Data_List_Types.Cons(new Data_Tuple.Tuple(i, x), xs);
-            };
-        };
-    })(Data_List_Types.Nil.value);
-};
-var itraverseOf_ = function (dictApplicative) {
-    return function (p) {
-        return function (f) {
-            return ifoldrOf(p)(function (i) {
-                return function (a) {
-                    return function (fu) {
-                        return Control_Apply.applySecond(dictApplicative.Apply0())(Data_Functor["void"]((dictApplicative.Apply0()).Functor0())(f(i)(a)))(fu);
-                    };
-                };
-            })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
-        };
-    };
-};
-var ifindOf = function (p) {
-    return function (f) {
-        return ifoldrOf(p)(function (i) {
-            return function (a) {
-                return Data_Maybe.maybe((function () {
-                    var $36 = f(i)(a);
-                    if ($36) {
-                        return new Data_Maybe.Just(a);
-                    };
-                    return Data_Maybe.Nothing.value;
-                })())(Data_Maybe.Just.create);
-            };
-        })(Data_Maybe.Nothing.value);
-    };
-};
-var ianyOf = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function (f) {
-            return function ($47) {
-                return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(ifoldMapOf(p)(function (i) {
-                    return function ($48) {
-                        return Data_Monoid_Disj.Disj(f(i)($48));
-                    };
-                })($47));
-            };
-        };
-    };
-};
-var iallOf = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function (f) {
-            return function ($49) {
-                return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(ifoldMapOf(p)(function (i) {
-                    return function ($50) {
-                        return Data_Monoid_Conj.Conj(f(i)($50));
-                    };
-                })($49));
-            };
-        };
-    };
-};
-var folded = function (dictMonoid) {
-    return function (dictFoldable) {
-        return function (v) {
-            return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(v);
-        };
-    };
-};
-var foldMapOf = Data_Newtype.under(Data_Lens_Internal_Forget.newtypeForget)(Data_Lens_Internal_Forget.newtypeForget)(Data_Lens_Internal_Forget.Forget);
-var foldOf = function (p) {
-    return foldMapOf(p)(Control_Category.id(Control_Category.categoryFn));
-};
-var foldlOf = function (p) {
-    return function (f) {
-        return function (r) {
-            return function ($51) {
-                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(foldMapOf(p)(function ($52) {
-                    return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(f)($52)));
-                })($51)));
-            };
-        };
-    };
-};
-var foldrOf = function (p) {
-    return function (f) {
-        return function (r) {
-            return function ($53) {
-                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(foldMapOf(p)(function ($54) {
-                    return Data_Monoid_Endo.Endo(f($54));
-                })($53));
-            };
-        };
-    };
-};
-var maximumOf = function (dictOrd) {
-    return function (p) {
-        var max = function (a) {
-            return function (b) {
-                var $38 = Data_Ord.greaterThan(dictOrd)(a)(b);
-                if ($38) {
-                    return a;
-                };
-                return b;
-            };
-        };
-        return foldrOf(p)(function (a) {
-            return function ($55) {
-                return Data_Maybe.Just.create(Data_Maybe.maybe(a)(max(a))($55));
-            };
-        })(Data_Maybe.Nothing.value);
-    };
-};
-var minimumOf = function (dictOrd) {
-    return function (p) {
-        var min = function (a) {
-            return function (b) {
-                var $39 = Data_Ord.lessThan(dictOrd)(a)(b);
-                if ($39) {
-                    return a;
-                };
-                return b;
-            };
-        };
-        return foldrOf(p)(function (a) {
-            return function ($56) {
-                return Data_Maybe.Just.create(Data_Maybe.maybe(a)(min(a))($56));
-            };
-        })(Data_Maybe.Nothing.value);
-    };
-};
-var toListOf = function (p) {
-    return foldrOf(p)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);
-};
-var toListOfOn = function (s) {
-    return function (p) {
-        return toListOf(p)(s);
-    };
-};
-var traverseOf_ = function (dictApplicative) {
-    return function (p) {
-        return function (f) {
-            return foldrOf(p)(function (a) {
-                return function (fu) {
-                    return Control_Apply.applySecond(dictApplicative.Apply0())(Data_Functor["void"]((dictApplicative.Apply0()).Functor0())(f(a)))(fu);
-                };
-            })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
-        };
-    };
-};
-var has = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function ($57) {
-            return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(foldMapOf(p)(Data_Function["const"](Data_HeytingAlgebra.tt(dictHeytingAlgebra)))($57));
-        };
-    };
-};
-var hasn$primet = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function ($58) {
-            return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(foldMapOf(p)(Data_Function["const"](Data_HeytingAlgebra.ff(dictHeytingAlgebra)))($58));
-        };
-    };
-};
-var lastOf = function (p) {
-    return function ($59) {
-        return Data_Newtype.unwrap(Data_Maybe_Last.newtypeLast)(foldMapOf(p)(function ($60) {
-            return Data_Maybe_Last.Last(Data_Maybe.Just.create($60));
-        })($59));
-    };
-};
-var lengthOf = function (p) {
-    return function ($61) {
-        return Data_Newtype.unwrap(Data_Monoid_Additive.newtypeAdditive)(foldMapOf(p)(Data_Function["const"](1))($61));
-    };
-};
-var preview = function (p) {
-    return function ($62) {
-        return Data_Newtype.unwrap(Data_Maybe_First.newtypeFirst)(foldMapOf(p)(function ($63) {
-            return Data_Maybe_First.First(Data_Maybe.Just.create($63));
-        })($62));
-    };
-};
-var previewOn = function (s) {
-    return function (p) {
-        return preview(p)(s);
-    };
-};
-var productOf = function (dictSemiring) {
-    return function (p) {
-        return function ($64) {
-            return Data_Newtype.unwrap(Data_Monoid_Multiplicative.newtypeMultiplicative)(foldMapOf(p)(Data_Monoid_Multiplicative.Multiplicative)($64));
-        };
-    };
-};
-var sequenceOf_ = function (dictApplicative) {
-    return function (p) {
-        return function ($65) {
-            return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(Control_Applicative.pure(dictApplicative)(Data_Unit.unit))(foldMapOf(p)(function (f) {
-                return function (v) {
-                    return Control_Apply.applySecond(dictApplicative.Apply0())(f)(v);
-                };
-            })($65));
-        };
-    };
-};
-var sumOf = function (dictSemiring) {
-    return function (p) {
-        return function ($66) {
-            return Data_Newtype.unwrap(Data_Monoid_Additive.newtypeAdditive)(foldMapOf(p)(Data_Monoid_Additive.Additive)($66));
-        };
-    };
-};
-var firstOf = function (p) {
-    return function ($67) {
-        return Data_Newtype.unwrap(Data_Maybe_First.newtypeFirst)(foldMapOf(p)(function ($68) {
-            return Data_Maybe_First.First(Data_Maybe.Just.create($68));
-        })($67));
-    };
-};
-var findOf = function (p) {
-    return function (f) {
-        return foldrOf(p)(function (a) {
-            return Data_Maybe.maybe((function () {
-                var $40 = f(a);
-                if ($40) {
-                    return new Data_Maybe.Just(a);
-                };
-                return Data_Maybe.Nothing.value;
-            })())(Data_Maybe.Just.create);
-        })(Data_Maybe.Nothing.value);
-    };
-};
-var filtered = function (dictChoice) {
-    return function (f) {
-        return function ($69) {
-            return Data_Profunctor.dimap(dictChoice.Profunctor0())(function (x) {
-                var $41 = f(x);
-                if ($41) {
-                    return new Data_Either.Right(x);
-                };
-                return new Data_Either.Left(x);
-            })(Data_Either.either(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn)))(Data_Profunctor_Choice.right(dictChoice)($69));
-        };
-    };
-};
-var anyOf = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function (f) {
-            return function ($70) {
-                return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(foldMapOf(p)(function ($71) {
-                    return Data_Monoid_Disj.Disj(f($71));
-                })($70));
-            };
-        };
-    };
-};
-var elemOf = function (dictEq) {
-    return function (p) {
-        return function (a) {
-            return anyOf(Data_HeytingAlgebra.heytingAlgebraBoolean)(p)(function (v) {
-                return Data_Eq.eq(dictEq)(v)(a);
-            });
-        };
-    };
-};
-var orOf = function (dictHeytingAlgebra) {
-    return function (p) {
-        return anyOf(dictHeytingAlgebra)(p)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var allOf = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function (f) {
-            return function ($72) {
-                return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(foldMapOf(p)(function ($73) {
-                    return Data_Monoid_Conj.Conj(f($73));
-                })($72));
-            };
-        };
-    };
-};
-var andOf = function (dictHeytingAlgebra) {
-    return function (p) {
-        return allOf(dictHeytingAlgebra)(p)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var notElemOf = function (dictEq) {
-    return function (p) {
-        return function (a) {
-            return allOf(Data_HeytingAlgebra.heytingAlgebraBoolean)(p)(function (v) {
-                return Data_Eq.notEq(dictEq)(v)(a);
-            });
-        };
-    };
-};
-module.exports = {
-    allOf: allOf, 
-    andOf: andOf, 
-    anyOf: anyOf, 
-    elemOf: elemOf, 
-    filtered: filtered, 
-    findOf: findOf, 
-    firstOf: firstOf, 
-    foldMapOf: foldMapOf, 
-    foldOf: foldOf, 
-    folded: folded, 
-    foldlOf: foldlOf, 
-    foldrOf: foldrOf, 
-    has: has, 
-    "hasn't": hasn$primet, 
-    iallOf: iallOf, 
-    ianyOf: ianyOf, 
-    ifoldMapOf: ifoldMapOf, 
-    ifoldlOf: ifoldlOf, 
-    ifoldrOf: ifoldrOf, 
-    itoListOf: itoListOf, 
-    itraverseOf_: itraverseOf_, 
-    lastOf: lastOf, 
-    lengthOf: lengthOf, 
-    maximumOf: maximumOf, 
-    minimumOf: minimumOf, 
-    notElemOf: notElemOf, 
-    orOf: orOf, 
-    preview: preview, 
-    previewOn: previewOn, 
-    productOf: productOf, 
-    replicated: replicated, 
-    sequenceOf_: sequenceOf_, 
-    sumOf: sumOf, 
-    toListOf: toListOf, 
-    toListOfOn: toListOfOn, 
-    traverseOf_: traverseOf_, 
-    unfolded: unfolded
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Lens.Internal.Forget":172,"../Data.Lens.Internal.Indexed":174,"../Data.Lens.Types":190,"../Data.List":194,"../Data.List.Types":193,"../Data.Maybe":198,"../Data.Maybe.First":196,"../Data.Maybe.Last":197,"../Data.Monoid":207,"../Data.Monoid.Additive":201,"../Data.Monoid.Conj":202,"../Data.Monoid.Disj":203,"../Data.Monoid.Dual":204,"../Data.Monoid.Endo":205,"../Data.Monoid.Multiplicative":206,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Tuple":245,"../Data.Unit":249,"../Prelude":268}],168:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Lens_Internal_Forget = require("../Data.Lens.Internal.Forget");
-var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var view = function (l) {
-    return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(l(Control_Category.id(Control_Category.categoryFn)));
-};
-var viewOn = function (s) {
-    return function (l) {
-        return view(l)(s);
-    };
-};
-var use = function (dictMonadState) {
-    return function (p) {
-        return Control_Monad_State_Class.gets(dictMonadState)(function (v) {
-            return viewOn(v)(p);
-        });
-    };
-};
-var to = function (f) {
-    return function (p) {
-        return function ($3) {
-            return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(p)(f($3));
-        };
-    };
-};
-var iview = function (l) {
-    return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(l(Data_Lens_Internal_Indexed.Indexed(Control_Category.id(Control_Category.categoryFn))));
-};
-var iuse = function (dictMonadState) {
-    return function (p) {
-        return Control_Monad_State_Class.gets(dictMonadState)(iview(p));
-    };
-};
-module.exports = {
-    iuse: iuse, 
-    iview: iview, 
-    to: to, 
-    use: use, 
-    view: view, 
-    viewOn: viewOn
-};
-
-},{"../Control.Category":47,"../Control.Monad.State.Class":80,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Lens.Internal.Forget":172,"../Data.Lens.Internal.Indexed":174,"../Data.Lens.Types":190,"../Data.Newtype":209,"../Data.Tuple":245,"../Prelude":268}],169:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Data_Distributive = require("../Data.Distributive");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Lens_Internal_Grating = require("../Data.Lens.Internal.Grating");
-var Data_Lens_Internal_Zipping = require("../Data.Lens.Internal.Zipping");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
-var Data_Profunctor_Costar = require("../Data.Profunctor.Costar");
-var Data_Profunctor_Star = require("../Data.Profunctor.Star");
-var Prelude = require("../Prelude");
-var zipWithOf = function (g) {
-    return function (f) {
-        return Data_Newtype.unwrap(Data_Lens_Internal_Zipping.newtypeZipping)(g(f));
-    };
-};
-var zipFWithOf = function (g) {
-    return function (f) {
-        return Data_Newtype.unwrap(Data_Profunctor_Costar.newtypeCostar)(g(f));
-    };
-};
-var withGrate = function (g) {
-    return Data_Newtype.unwrap(Data_Lens_Internal_Grating.newtypeGrating)(g(function (f) {
-        return f(Control_Category.id(Control_Category.categoryFn));
-    }));
-};
-var grate = function (f) {
-    return function (dictClosed) {
-        return function (pab) {
-            return Data_Profunctor.dimap(dictClosed.Profunctor0())(Data_Function.applyFlipped)(f)(Data_Profunctor_Closed.closed(dictClosed)(pab));
-        };
-    };
-};
-var cotraversed = function (dictDistributive) {
-    return function (dictClosed) {
-        return grate(function (f) {
-            return Data_Distributive.cotraverse(dictDistributive)(Data_Functor.functorFn)(f)(Control_Category.id(Control_Category.categoryFn));
-        })(dictClosed);
-    };
-};
-var collectOf = function (g) {
-    return function (f) {
-        return Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar)(g(f));
-    };
-};
-var cloneGrate = function (g) {
-    return function (dictClosed) {
-        return grate(withGrate(g))(dictClosed);
-    };
-};
-module.exports = {
-    cloneGrate: cloneGrate, 
-    collectOf: collectOf, 
-    cotraversed: cotraversed, 
-    grate: grate, 
-    withGrate: withGrate, 
-    zipFWithOf: zipFWithOf, 
-    zipWithOf: zipWithOf
-};
-
-},{"../Control.Category":47,"../Data.Distributive":135,"../Data.Function":149,"../Data.Functor":155,"../Data.Lens.Internal.Grating":173,"../Data.Lens.Internal.Zipping":180,"../Data.Lens.Types":190,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Closed":219,"../Data.Profunctor.Costar":221,"../Data.Profunctor.Star":223,"../Prelude":268}],170:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Monad_State = require("../Control.Monad.State");
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Monad_State_Trans = require("../Control.Monad.State.Trans");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Compose = require("../Data.Functor.Compose");
-var Data_Identity = require("../Data.Identity");
-var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
-var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Star = require("../Data.Profunctor.Star");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var unIndex = function (dictProfunctor) {
-    return function (l) {
-        return function ($7) {
-            return l(Data_Lens_Internal_Indexed.Indexed(Data_Profunctor.dimap(dictProfunctor)(Data_Tuple.snd)(Control_Category.id(Control_Category.categoryFn))($7)));
-        };
-    };
-};
-var iwander = function (itr) {
-    return function (dictWander) {
-        return function ($8) {
-            return Data_Lens_Internal_Wander.wander(dictWander)(function (dictApplicative) {
-                return function (f) {
-                    return function (s) {
-                        return itr(dictApplicative)(Data_Tuple.curry(f))(s);
-                    };
-                };
-            })(Data_Newtype.unwrap(Data_Lens_Internal_Indexed.newtypeIndexed)($8));
-        };
-    };
-};
-var positions = function (tr) {
-    return function (dictWander) {
-        return iwander(function (dictApplicative) {
-            return function (f) {
-                return function (s) {
-                    return Data_Function.flip(Control_Monad_State.evalState)(0)(Data_Newtype.unwrap(Data_Functor_Compose.newtypeCompose)(Data_Function.flip(Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar))(s)(tr(Data_Lens_Internal_Wander.wanderStar(Data_Functor_Compose.applicativeCompose(Control_Monad_State_Trans.applicativeStateT(Data_Identity.monadIdentity))(dictApplicative)))(function (a) {
-                        return Data_Functor_Compose.Compose(Control_Apply.applyFirst(Control_Monad_State_Trans.applyStateT(Data_Identity.monadIdentity))(Control_Apply.apply(Control_Monad_State_Trans.applyStateT(Data_Identity.monadIdentity))(Data_Functor.map(Control_Monad_State_Trans.functorStateT(Data_Identity.functorIdentity))(f)(Control_Monad_State_Class.get(Control_Monad_State_Trans.monadStateStateT(Data_Identity.monadIdentity))))(Control_Applicative.pure(Control_Monad_State_Trans.applicativeStateT(Data_Identity.monadIdentity))(a)))(Control_Monad_State_Class.modify(Control_Monad_State_Trans.monadStateStateT(Data_Identity.monadIdentity))(function (v) {
-                            return v + 1 | 0;
-                        })));
-                    }))));
-                };
-            };
-        })(dictWander);
-    };
-};
-var asIndex = function (dictProfunctor) {
-    return function (l) {
-        return function ($9) {
-            return l(Data_Lens_Internal_Indexed.Indexed(Data_Profunctor.dimap(dictProfunctor)(Data_Tuple.fst)(Control_Category.id(Control_Category.categoryFn))($9)));
-        };
-    };
-};
-module.exports = {
-    asIndex: asIndex, 
-    iwander: iwander, 
-    positions: positions, 
-    unIndex: unIndex
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Monad.State":82,"../Control.Monad.State.Class":80,"../Control.Monad.State.Trans":81,"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.Compose":151,"../Data.Identity":161,"../Data.Lens.Internal.Indexed":174,"../Data.Lens.Internal.Wander":179,"../Data.Lens.Types":190,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Star":223,"../Data.Semiring":231,"../Data.Tuple":245,"../Prelude":268}],171:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Functor = require("../Data.Functor");
-var Data_Profunctor = require("../Data.Profunctor");
-var Prelude = require("../Prelude");
-var Exchange = (function () {
-    function Exchange(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    Exchange.create = function (value0) {
-        return function (value1) {
-            return new Exchange(value0, value1);
-        };
-    };
-    return Exchange;
-})();
-var profunctorExchange = new Data_Profunctor.Profunctor(function (f) {
-    return function (g) {
-        return function (v) {
-            return new Exchange(function ($11) {
-                return v.value0(f($11));
-            }, function ($12) {
-                return g(v.value1($12));
-            });
-        };
-    };
-});
-var functorExchange = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return new Exchange(v.value0, function ($13) {
-            return f(v.value1($13));
-        });
-    };
-});
-module.exports = {
-    Exchange: Exchange, 
-    functorExchange: functorExchange, 
-    profunctorExchange: profunctorExchange
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Functor":155,"../Data.Profunctor":225,"../Prelude":268}],172:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Const = require("../Data.Const");
-var Data_Either = require("../Data.Either");
-var Data_Functor = require("../Data.Functor");
-var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Profunctor_Cochoice = require("../Data.Profunctor.Cochoice");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Forget = function (x) {
-    return x;
-};
-var profunctorForget = new Data_Profunctor.Profunctor(function (f) {
-    return function (v) {
-        return function (v1) {
-            return function ($25) {
-                return v1(f($25));
-            };
-        };
-    };
-});
-var strongForget = new Data_Profunctor_Strong.Strong(function () {
-    return profunctorForget;
-}, function (v) {
-    return function ($26) {
-        return v(Data_Tuple.fst($26));
-    };
-}, function (v) {
-    return function ($27) {
-        return v(Data_Tuple.snd($27));
-    };
-});
-var newtypeForget = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Forget);
-var cochoiceForget = new Data_Profunctor_Cochoice.Cochoice(function () {
-    return profunctorForget;
-}, function (v) {
-    return function ($28) {
-        return v(Data_Either.Left.create($28));
-    };
-}, function (v) {
-    return function ($29) {
-        return v(Data_Either.Right.create($29));
-    };
-});
-var choiceForget = function (dictMonoid) {
-    return new Data_Profunctor_Choice.Choice(function () {
-        return profunctorForget;
-    }, function (v) {
-        return Data_Either.either(v)(Data_Monoid.mempty(Data_Monoid.monoidFn(dictMonoid)));
-    }, function (v) {
-        return Data_Either.either(Data_Monoid.mempty(Data_Monoid.monoidFn(dictMonoid)))(v);
-    });
-};
-var wanderForget = function (dictMonoid) {
-    return new Data_Lens_Internal_Wander.Wander(function () {
-        return choiceForget(dictMonoid);
-    }, function () {
-        return strongForget;
-    }, function (f) {
-        return function (v) {
-            return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Const.newtypeConst)(Data_Const.newtypeConst)(Data_Const.Const)(f(Data_Const.applicativeConst(dictMonoid)))(v);
-        };
-    });
-};
-module.exports = {
-    Forget: Forget, 
-    newtypeForget: newtypeForget, 
-    profunctorForget: profunctorForget, 
-    choiceForget: choiceForget, 
-    strongForget: strongForget, 
-    cochoiceForget: cochoiceForget, 
-    wanderForget: wanderForget
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Const":134,"../Data.Either":136,"../Data.Functor":155,"../Data.Lens.Internal.Wander":179,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Data.Profunctor.Cochoice":220,"../Data.Profunctor.Strong":224,"../Data.Tuple":245,"../Prelude":268}],173:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
-var Prelude = require("../Prelude");
-var Grating = function (x) {
-    return x;
-};
-var profunctorGrating = new Data_Profunctor.Profunctor(function (f) {
-    return function (g) {
-        return function (v) {
-            return function (d) {
-                return g(v(function (k) {
-                    return d(function ($9) {
-                        return k(f($9));
-                    });
-                }));
-            };
-        };
-    };
-});
-var newtypeGrating = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Grating);
-var closedGrating = new Data_Profunctor_Closed.Closed(function () {
-    return profunctorGrating;
-}, function (v) {
-    return function (f) {
-        return function (x) {
-            return v(function (k) {
-                return f(function (g) {
-                    return k(g(x));
-                });
-            });
-        };
-    };
-});
-module.exports = {
-    Grating: Grating, 
-    newtypeGrating: newtypeGrating, 
-    profunctorGrating: profunctorGrating, 
-    closedGrating: closedGrating
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Closed":219,"../Prelude":268}],174:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Indexed = function (x) {
-    return x;
-};
-var profunctorIndexed = function (dictProfunctor) {
-    return new Data_Profunctor.Profunctor(function (f) {
-        return function (g) {
-            return function (v) {
-                return Data_Profunctor.dimap(dictProfunctor)(Data_Profunctor_Strong.second(Data_Profunctor_Strong.strongFn)(f))(g)(v);
-            };
-        };
-    });
-};
-var strongIndexed = function (dictStrong) {
-    return new Data_Profunctor_Strong.Strong(function () {
-        return profunctorIndexed(dictStrong.Profunctor0());
-    }, function (v) {
-        return Indexed(Data_Profunctor.lmap(dictStrong.Profunctor0())(function (v1) {
-            return new Data_Tuple.Tuple(new Data_Tuple.Tuple(v1.value0, v1.value1.value0), v1.value1.value1);
-        })(Data_Profunctor_Strong.first(dictStrong)(v)));
-    }, function (v) {
-        return Indexed(Data_Profunctor.lmap(dictStrong.Profunctor0())(function (v1) {
-            return new Data_Tuple.Tuple(v1.value1.value0, new Data_Tuple.Tuple(v1.value0, v1.value1.value1));
-        })(Data_Profunctor_Strong.second(dictStrong)(v)));
-    });
-};
-var newtypeIndexed = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Indexed);
-var choiceIndexed = function (dictChoice) {
-    return new Data_Profunctor_Choice.Choice(function () {
-        return profunctorIndexed(dictChoice.Profunctor0());
-    }, function (v) {
-        return Indexed(Data_Profunctor.lmap(dictChoice.Profunctor0())(function (v1) {
-            return Data_Either.either(function ($47) {
-                return Data_Either.Left.create(Data_Tuple.Tuple.create(v1.value0)($47));
-            })(Data_Either.Right.create)(v1.value1);
-        })(Data_Profunctor_Choice.left(dictChoice)(v)));
-    }, function (v) {
-        return Indexed(Data_Profunctor.lmap(dictChoice.Profunctor0())(function (v1) {
-            return Data_Either.either(Data_Either.Left.create)(function ($48) {
-                return Data_Either.Right.create(Data_Tuple.Tuple.create(v1.value0)($48));
-            })(v1.value1);
-        })(Data_Profunctor_Choice.right(dictChoice)(v)));
-    });
-};
-var wanderIndexed = function (dictWander) {
-    return new Data_Lens_Internal_Wander.Wander(function () {
-        return choiceIndexed(dictWander.Choice1());
-    }, function () {
-        return strongIndexed(dictWander.Strong0());
-    }, function (trav) {
-        return function (v) {
-            return Indexed(Data_Lens_Internal_Wander.wander(dictWander)(function (dictApplicative) {
-                return function (ia2fb) {
-                    return function (v1) {
-                        return trav(dictApplicative)(function ($49) {
-                            return ia2fb(Data_Tuple.Tuple.create(v1.value0)($49));
-                        })(v1.value1);
-                    };
-                };
-            })(v));
-        };
-    });
-};
-module.exports = {
-    Indexed: Indexed, 
-    newtypeIndexed: newtypeIndexed, 
-    profunctorIndexed: profunctorIndexed, 
-    strongIndexed: strongIndexed, 
-    choiceIndexed: choiceIndexed, 
-    wanderIndexed: wanderIndexed
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Function":149,"../Data.Lens.Internal.Wander":179,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Data.Profunctor.Strong":224,"../Data.Tuple":245,"../Prelude":268}],175:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Either = require("../Data.Either");
-var Data_Functor = require("../Data.Functor");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Prelude = require("../Prelude");
-var Market = (function () {
-    function Market(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    Market.create = function (value0) {
-        return function (value1) {
-            return new Market(value0, value1);
-        };
-    };
-    return Market;
-})();
-var profunctorMarket = new Data_Profunctor.Profunctor(function (f) {
-    return function (g) {
-        return function (v) {
-            return new Market(function ($19) {
-                return g(v.value0($19));
-            }, function ($20) {
-                return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(g)(v.value1(f($20)));
-            });
-        };
-    };
-});
-var functorMarket = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return new Market(function ($21) {
-            return f(v.value0($21));
-        }, function ($22) {
-            return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(f)(v.value1($22));
-        });
-    };
-});
-var choiceMarket = new Data_Profunctor_Choice.Choice(function () {
-    return profunctorMarket;
-}, function (v) {
-    return new Market(function ($23) {
-        return Data_Either.Left.create(v.value0($23));
-    }, Data_Either.either(function ($24) {
-        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(Data_Either.Left.create)(v.value1($24));
-    })(function ($25) {
-        return Data_Either.Left.create(Data_Either.Right.create($25));
-    }));
-}, function (v) {
-    return new Market(function ($26) {
-        return Data_Either.Right.create(v.value0($26));
-    }, Data_Either.either(function ($27) {
-        return Data_Either.Left.create(Data_Either.Left.create($27));
-    })(function ($28) {
-        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(Data_Either.Right.create)(v.value1($28));
-    }));
-});
-module.exports = {
-    Market: Market, 
-    functorMarket: functorMarket, 
-    profunctorMarket: profunctorMarket, 
-    choiceMarket: choiceMarket
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Bifunctor":127,"../Data.Either":136,"../Data.Functor":155,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Prelude":268}],176:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Profunctor_Cochoice = require("../Data.Profunctor.Cochoice");
-var Data_Profunctor_Costrong = require("../Data.Profunctor.Costrong");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Prelude = require("../Prelude");
-var Re = function (x) {
-    return x;
-};
-var profunctorRe = function (dictProfunctor) {
-    return new Data_Profunctor.Profunctor(function (f) {
-        return function (g) {
-            return function (v) {
-                return function ($28) {
-                    return v(Data_Profunctor.dimap(dictProfunctor)(g)(f)($28));
-                };
-            };
-        };
-    });
-};
-var strongRe = function (dictStrong) {
-    return new Data_Profunctor_Costrong.Costrong(function () {
-        return profunctorRe(dictStrong.Profunctor0());
-    }, function (v) {
-        return function ($29) {
-            return v(Data_Profunctor_Strong.first(dictStrong)($29));
-        };
-    }, function (v) {
-        return function ($30) {
-            return v(Data_Profunctor_Strong.second(dictStrong)($30));
-        };
-    });
-};
-var newtypeRe = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Re);
-var costrongRe = function (dictCostrong) {
-    return new Data_Profunctor_Strong.Strong(function () {
-        return profunctorRe(dictCostrong.Profunctor0());
-    }, function (v) {
-        return function ($31) {
-            return v(Data_Profunctor_Costrong.unfirst(dictCostrong)($31));
-        };
-    }, function (v) {
-        return function ($32) {
-            return v(Data_Profunctor_Costrong.unsecond(dictCostrong)($32));
-        };
-    });
-};
-var cochoiceRe = function (dictCochoice) {
-    return new Data_Profunctor_Choice.Choice(function () {
-        return profunctorRe(dictCochoice.Profunctor0());
-    }, function (v) {
-        return function ($33) {
-            return v(Data_Profunctor_Cochoice.unleft(dictCochoice)($33));
-        };
-    }, function (v) {
-        return function ($34) {
-            return v(Data_Profunctor_Cochoice.unright(dictCochoice)($34));
-        };
-    });
-};
-var choiceRe = function (dictChoice) {
-    return new Data_Profunctor_Cochoice.Cochoice(function () {
-        return profunctorRe(dictChoice.Profunctor0());
-    }, function (v) {
-        return function ($35) {
-            return v(Data_Profunctor_Choice.left(dictChoice)($35));
-        };
-    }, function (v) {
-        return function ($36) {
-            return v(Data_Profunctor_Choice.right(dictChoice)($36));
-        };
-    });
-};
-module.exports = {
-    Re: Re, 
-    newtypeRe: newtypeRe, 
-    profunctorRe: profunctorRe, 
-    choiceRe: choiceRe, 
-    cochoiceRe: cochoiceRe, 
-    strongRe: strongRe, 
-    costrongRe: costrongRe
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Data.Profunctor.Cochoice":220,"../Data.Profunctor.Costrong":222,"../Data.Profunctor.Strong":224,"../Prelude":268}],177:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Shop = (function () {
-    function Shop(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    Shop.create = function (value0) {
-        return function (value1) {
-            return new Shop(value0, value1);
-        };
-    };
-    return Shop;
-})();
-var profunctorShop = new Data_Profunctor.Profunctor(function (f) {
-    return function (g) {
-        return function (v) {
-            return new Shop(function ($30) {
-                return v.value0(f($30));
-            }, function (s) {
-                return function ($31) {
-                    return g(v.value1(f(s))($31));
-                };
-            });
-        };
-    };
-});
-var strongShop = new Data_Profunctor_Strong.Strong(function () {
-    return profunctorShop;
-}, function (v) {
-    return new Shop(function (v1) {
-        return v.value0(v1.value0);
-    }, function (v1) {
-        return function (b) {
-            return new Data_Tuple.Tuple(v.value1(v1.value0)(b), v1.value1);
-        };
-    });
-}, function (v) {
-    return new Shop(function (v1) {
-        return v.value0(v1.value1);
-    }, function (v1) {
-        return function (b) {
-            return new Data_Tuple.Tuple(v1.value0, v.value1(v1.value1)(b));
-        };
-    });
-});
-module.exports = {
-    Shop: Shop, 
-    profunctorShop: profunctorShop, 
-    strongShop: strongShop
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Profunctor":225,"../Data.Profunctor.Strong":224,"../Data.Tuple":245,"../Prelude":268}],178:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Either = require("../Data.Either");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Profunctor_Costrong = require("../Data.Profunctor.Costrong");
-var Data_Tuple = require("../Data.Tuple");
-var Tagged = function (x) {
-    return x;
-};
-var taggedProfunctor = new Data_Profunctor.Profunctor(function (v) {
-    return function (g) {
-        return function (v1) {
-            return g(v1);
-        };
-    };
-});
-var taggedCostrong = new Data_Profunctor_Costrong.Costrong(function () {
-    return taggedProfunctor;
-}, function (v) {
-    return v.value0;
-}, function (v) {
-    return v.value1;
-});
-var taggedChoice = new Data_Profunctor_Choice.Choice(function () {
-    return taggedProfunctor;
-}, function (v) {
-    return new Data_Either.Left(v);
-}, function (v) {
-    return new Data_Either.Right(v);
-});
-var newtypeTagged = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Tagged);
-module.exports = {
-    Tagged: Tagged, 
-    newtypeTagged: newtypeTagged, 
-    taggedProfunctor: taggedProfunctor, 
-    taggedChoice: taggedChoice, 
-    taggedCostrong: taggedCostrong
-};
-
-},{"../Data.Either":136,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Data.Profunctor.Costrong":222,"../Data.Tuple":245}],179:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Functor = require("../Data.Functor");
-var Data_Identity = require("../Data.Identity");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Profunctor_Star = require("../Data.Profunctor.Star");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Prelude = require("../Prelude");
-var Wander = function (Choice1, Strong0, wander) {
-    this.Choice1 = Choice1;
-    this.Strong0 = Strong0;
-    this.wander = wander;
-};
-var wanderStar = function (dictApplicative) {
-    return new Wander(function () {
-        return Data_Profunctor_Star.choiceStar(dictApplicative);
-    }, function () {
-        return Data_Profunctor_Star.strongStar((dictApplicative.Apply0()).Functor0());
-    }, function (t) {
-        return function (v) {
-            return t(dictApplicative)(v);
-        };
-    });
-};
-var wanderFunction = new Wander(function () {
-    return Data_Profunctor_Choice.choiceFn;
-}, function () {
-    return Data_Profunctor_Strong.strongFn;
-}, function (t) {
-    return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Identity.newtypeIdentity)(Data_Identity.newtypeIdentity)(Data_Identity.Identity)(t(Data_Identity.applicativeIdentity));
-});
-var wander = function (dict) {
-    return dict.wander;
-};
-module.exports = {
-    Wander: Wander, 
-    wander: wander, 
-    wanderFunction: wanderFunction, 
-    wanderStar: wanderStar
-};
-
-},{"../Data.Functor":155,"../Data.Identity":161,"../Data.Newtype":209,"../Data.Profunctor.Choice":218,"../Data.Profunctor.Star":223,"../Data.Profunctor.Strong":224,"../Prelude":268}],180:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
-var Zipping = function (x) {
-    return x;
-};
-var profunctorZipping = new Data_Profunctor.Profunctor(function (f) {
-    return function (g) {
-        return function (v) {
-            return function (a1) {
-                return function (a2) {
-                    return g(v(f(a1))(f(a2)));
-                };
-            };
-        };
-    };
-});
-var newtypeZipping = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Zipping);
-var closedZipping = new Data_Profunctor_Closed.Closed(function () {
-    return profunctorZipping;
-}, function (v) {
-    return function (f1) {
-        return function (f2) {
-            return function (x) {
-                return v(f1(x))(f2(x));
-            };
-        };
-    };
-});
-module.exports = {
-    Zipping: Zipping, 
-    newtypeZipping: newtypeZipping, 
-    profunctorZipping: profunctorZipping, 
-    closedZipping: closedZipping
-};
-
-},{"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Closed":219}],181:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Boolean = require("../Data.Boolean");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Lens_Internal_Exchange = require("../Data.Lens.Internal.Exchange");
-var Data_Lens_Internal_Re = require("../Data.Lens.Internal.Re");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var withIso = function (l) {
-    return function (f) {
-        var v = l(new Data_Lens_Internal_Exchange.Exchange(Control_Category.id(Control_Category.categoryFn), Control_Category.id(Control_Category.categoryFn)));
-        return f(v.value0)(v.value1);
-    };
-};
-var under = function (l) {
-    return withIso(l)(function (sa) {
-        return function (bt) {
-            return function (ts) {
-                return function ($19) {
-                    return sa(ts(bt($19)));
-                };
-            };
-        };
-    });
-};
-var re = function (t) {
-    return Data_Newtype.unwrap(Data_Lens_Internal_Re.newtypeRe)(t(Control_Category.id(Control_Category.categoryFn)));
-};
-var iso = function (f) {
-    return function (g) {
-        return function (dictProfunctor) {
-            return function (pab) {
-                return Data_Profunctor.dimap(dictProfunctor)(f)(g)(pab);
-            };
-        };
-    };
-};
-var mapping = function (dictFunctor) {
-    return function (dictFunctor1) {
-        return function (l) {
-            return function (dictProfunctor) {
-                return withIso(l)(function (sa) {
-                    return function (bt) {
-                        return iso(Data_Functor.map(dictFunctor)(sa))(Data_Functor.map(dictFunctor1)(bt))(dictProfunctor);
-                    };
-                });
-            };
-        };
-    };
-};
-var non = function (dictEq) {
-    return function (def) {
-        return function (dictProfunctor) {
-            var g = function (a) {
-                if (Data_Eq.eq(dictEq)(a)(def)) {
-                    return Data_Maybe.Nothing.value;
-                };
-                if (Data_Boolean.otherwise) {
-                    return new Data_Maybe.Just(a);
-                };
-                throw new Error("Failed pattern match at Data.Lens.Iso line 44, column 9 - line 45, column 33: " + [ a.constructor.name ]);
-            };
-            return iso(Data_Maybe.fromMaybe(def))(g)(dictProfunctor);
-        };
-    };
-};
-var uncurried = function (dictProfunctor) {
-    return iso(Data_Tuple.uncurry)(Data_Tuple.curry)(dictProfunctor);
-};
-var flipped = function (dictProfunctor) {
-    return iso(Data_Function.flip)(Data_Function.flip)(dictProfunctor);
-};
-var dimapping = function (dictProfunctor) {
-    return function (dictProfunctor1) {
-        return function (f) {
-            return function (g) {
-                return function (dictProfunctor2) {
-                    return withIso(f)(function (sa) {
-                        return function (bt) {
-                            return withIso(g)(function (ssaa) {
-                                return function (bbtt) {
-                                    return iso(Data_Profunctor.dimap(dictProfunctor)(sa)(ssaa))(Data_Profunctor.dimap(dictProfunctor1)(bt)(bbtt))(dictProfunctor2);
-                                };
-                            });
-                        };
-                    });
-                };
-            };
-        };
-    };
-};
-var curried = function (dictProfunctor) {
-    return iso(Data_Tuple.curry)(Data_Tuple.uncurry)(dictProfunctor);
-};
-var cloneIso = function (l) {
-    return function (dictProfunctor) {
-        return withIso(l)(function (x) {
-            return function (y) {
-                return function (p) {
-                    return iso(x)(y)(dictProfunctor)(p);
-                };
-            };
-        });
-    };
-};
-var auf = function (dictProfunctor) {
-    return function (l) {
-        return withIso(l)(function (sa) {
-            return function (bt) {
-                return function (f) {
-                    return function (g) {
-                        return function (e) {
-                            return bt(f(Data_Profunctor.rmap(dictProfunctor)(sa)(g))(e));
-                        };
-                    };
-                };
-            };
-        });
-    };
-};
-var au = function (l) {
-    return withIso(l)(function (sa) {
-        return function (bt) {
-            return function (f) {
-                return function (e) {
-                    return sa(f(bt)(e));
-                };
-            };
-        };
-    });
-};
-module.exports = {
-    au: au, 
-    auf: auf, 
-    cloneIso: cloneIso, 
-    curried: curried, 
-    dimapping: dimapping, 
-    flipped: flipped, 
-    iso: iso, 
-    mapping: mapping, 
-    non: non, 
-    re: re, 
-    uncurried: uncurried, 
-    under: under, 
-    withIso: withIso
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Boolean":129,"../Data.Eq":138,"../Data.Function":149,"../Data.Functor":155,"../Data.Lens.Internal.Exchange":171,"../Data.Lens.Internal.Re":176,"../Data.Lens.Types":190,"../Data.Maybe":198,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Tuple":245,"../Prelude":268}],182:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Lens_Lens = require("../Data.Lens.Lens");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-var _2 = function (dictStrong) {
-    return Data_Profunctor_Strong.second(dictStrong);
-};
-var _1 = function (dictStrong) {
-    return Data_Profunctor_Strong.first(dictStrong);
-};
-module.exports = {
-    _1: _1, 
-    _2: _2
-};
-
-},{"../Data.Lens.Lens":184,"../Data.Profunctor.Strong":224,"../Data.Tuple":245}],183:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Function = require("../Data.Function");
-var Data_Lens_Lens = require("../Data.Lens.Lens");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var united = function (dictStrong) {
-    return Data_Lens_Lens.lens(Data_Function["const"](Data_Unit.unit))(Data_Function["const"])(dictStrong);
-};
-module.exports = {
-    united: united
-};
-
-},{"../Data.Function":149,"../Data.Lens.Lens":184,"../Data.Unit":249,"../Prelude":268}],184:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
-var Data_Lens_Internal_Shop = require("../Data.Lens.Internal.Shop");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var withLens = function (l) {
-    return function (f) {
-        var v = l(new Data_Lens_Internal_Shop.Shop(Control_Category.id(Control_Category.categoryFn), function (v1) {
-            return function (b) {
-                return b;
-            };
-        }));
-        return f(v.value0)(v.value1);
-    };
-};
-var withIndexedLens = function (l) {
-    return function (f) {
-        var v = l(new Data_Lens_Internal_Shop.Shop(Control_Category.id(Control_Category.categoryFn), function (v1) {
-            return function (b) {
-                return b;
-            };
-        }));
-        return f(v.value0)(v.value1);
-    };
-};
-var lens$prime = function (to) {
-    return function (dictStrong) {
-        return function (pab) {
-            return Data_Profunctor.dimap(dictStrong.Profunctor0())(to)(function (v) {
-                return v.value1(v.value0);
-            })(Data_Profunctor_Strong.first(dictStrong)(pab));
-        };
-    };
-};
-var lens = function (get) {
-    return function (set) {
-        return function (dictStrong) {
-            return lens$prime(function (s) {
-                return new Data_Tuple.Tuple(get(s), function (b) {
-                    return set(s)(b);
-                });
-            })(dictStrong);
-        };
-    };
-};
-var ilens$prime = function (to) {
-    return function (dictStrong) {
-        return function (pab) {
-            return Data_Profunctor.dimap(dictStrong.Profunctor0())(to)(function (v) {
-                return v.value1(v.value0);
-            })(Data_Profunctor_Strong.first(dictStrong)(Data_Newtype.un(Data_Lens_Internal_Indexed.newtypeIndexed)(Data_Lens_Internal_Indexed.Indexed)(pab)));
-        };
-    };
-};
-var ilens = function (get) {
-    return function (set) {
-        return function (dictStrong) {
-            return ilens$prime(function (s) {
-                return new Data_Tuple.Tuple(get(s), function (b) {
-                    return set(s)(b);
-                });
-            })(dictStrong);
-        };
-    };
-};
-var cloneLens = function (l) {
-    return function (dictStrong) {
-        return withLens(l)(function (x) {
-            return function (y) {
-                return function (p) {
-                    return lens(x)(y)(dictStrong)(p);
-                };
-            };
-        });
-    };
-};
-var cloneIndexedLens = function (l) {
-    return function (dictStrong) {
-        return withIndexedLens(l)(function (x) {
-            return function (y) {
-                return function (p) {
-                    return ilens(x)(y)(dictStrong)(p);
-                };
-            };
-        });
-    };
-};
-module.exports = {
-    cloneIndexedLens: cloneIndexedLens, 
-    cloneLens: cloneLens, 
-    ilens: ilens, 
-    "ilens'": ilens$prime, 
-    lens: lens, 
-    "lens'": lens$prime, 
-    withIndexedLens: withIndexedLens, 
-    withLens: withLens
-};
-
-},{"../Control.Category":47,"../Data.Lens.Internal.Indexed":174,"../Data.Lens.Internal.Shop":177,"../Data.Lens.Types":190,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Strong":224,"../Data.Tuple":245,"../Prelude":268}],185:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Either = require("../Data.Either");
-var Data_Lens_Prism = require("../Data.Lens.Prism");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var _Right = function (dictChoice) {
-    return Data_Profunctor_Choice.right(dictChoice);
-};
-var _Left = function (dictChoice) {
-    return Data_Profunctor_Choice.left(dictChoice);
-};
-module.exports = {
-    _Left: _Left, 
-    _Right: _Right
-};
-
-},{"../Data.Either":136,"../Data.Lens.Prism":187,"../Data.Profunctor.Choice":218}],186:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Lens_Prism = require("../Data.Lens.Prism");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var _Nothing = function (dictChoice) {
-    return Data_Lens_Prism.prism(Data_Function["const"](Data_Maybe.Nothing.value))(Data_Maybe.maybe(new Data_Either.Right(Data_Unit.unit))(Data_Function["const"](new Data_Either.Left(Data_Maybe.Nothing.value))))(dictChoice);
-};
-var _Just = function (dictChoice) {
-    return Data_Lens_Prism.prism(Data_Maybe.Just.create)(Data_Maybe.maybe(new Data_Either.Left(Data_Maybe.Nothing.value))(Data_Either.Right.create))(dictChoice);
-};
-module.exports = {
-    _Just: _Just, 
-    _Nothing: _Nothing
-};
-
-},{"../Data.Either":136,"../Data.Function":149,"../Data.Lens.Prism":187,"../Data.Maybe":198,"../Data.Unit":249,"../Prelude":268}],187:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Lens_Internal_Market = require("../Data.Lens.Internal.Market");
-var Data_Lens_Internal_Tagged = require("../Data.Lens.Internal.Tagged");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Prelude = require("../Prelude");
-var withPrism = function (l) {
-    return function (f) {
-        var v = l(new Data_Lens_Internal_Market.Market(Control_Category.id(Control_Category.categoryFn), Data_Either.Right.create));
-        return f(v.value0)(v.value1);
-    };
-};
-var review = Data_Newtype.under(Data_Lens_Internal_Tagged.newtypeTagged)(Data_Lens_Internal_Tagged.newtypeTagged)(Data_Lens_Internal_Tagged.Tagged);
-var prism = function (to) {
-    return function (fro) {
-        return function (dictChoice) {
-            return function (pab) {
-                return Data_Profunctor.dimap(dictChoice.Profunctor0())(fro)(Data_Either.either(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn)))(Data_Profunctor_Choice.right(dictChoice)(Data_Profunctor.rmap(dictChoice.Profunctor0())(to)(pab)));
-            };
-        };
-    };
-};
-var prism$prime = function (to) {
-    return function (fro) {
-        return function (dictChoice) {
-            return prism(to)(function (s) {
-                return Data_Maybe.maybe(new Data_Either.Left(s))(Data_Either.Right.create)(fro(s));
-            })(dictChoice);
-        };
-    };
-};
-var nearly = function (x) {
-    return function (f) {
-        return function (dictChoice) {
-            return prism$prime(Data_Function["const"](x))(function ($14) {
-                return Control_MonadZero.guard(Data_Maybe.monadZeroMaybe)(f($14));
-            })(dictChoice);
-        };
-    };
-};
-var only = function (dictEq) {
-    return function (x) {
-        return function (dictChoice) {
-            return nearly(x)(function (v) {
-                return Data_Eq.eq(dictEq)(v)(x);
-            })(dictChoice);
-        };
-    };
-};
-var matching = function (l) {
-    return withPrism(l)(function (v) {
-        return function (f) {
-            return f;
-        };
-    });
-};
-var is = function (dictHeytingAlgebra) {
-    return function (l) {
-        return function ($15) {
-            return Data_Either.either(Data_Function["const"](Data_HeytingAlgebra.ff(dictHeytingAlgebra)))(Data_Function["const"](Data_HeytingAlgebra.tt(dictHeytingAlgebra)))(matching(l)($15));
-        };
-    };
-};
-var isn$primet = function (dictHeytingAlgebra) {
-    return function (l) {
-        return function ($16) {
-            return Data_HeytingAlgebra.not(dictHeytingAlgebra)(is(dictHeytingAlgebra)(l)($16));
-        };
-    };
-};
-var clonePrism = function (l) {
-    return function (dictChoice) {
-        return withPrism(l)(function (x) {
-            return function (y) {
-                return function (p) {
-                    return prism(x)(y)(dictChoice)(p);
-                };
-            };
-        });
-    };
-};
-module.exports = {
-    clonePrism: clonePrism, 
-    is: is, 
-    "isn't": isn$primet, 
-    matching: matching, 
-    nearly: nearly, 
-    only: only, 
-    prism: prism, 
-    "prism'": prism$prime, 
-    review: review, 
-    withPrism: withPrism
-};
-
-},{"../Control.Category":47,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Eq":138,"../Data.Function":149,"../Data.HeytingAlgebra":160,"../Data.Lens.Internal.Market":175,"../Data.Lens.Internal.Tagged":178,"../Data.Lens.Types":190,"../Data.Maybe":198,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Prelude":268}],188:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Monad_State_Class = require("../Control.Monad.State.Class");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_EuclideanRing = require("../Data.EuclideanRing");
-var Data_Function = require("../Data.Function");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var over = function (l) {
-    return l;
-};
-var set = function (l) {
-    return function (b) {
-        return over(l)(Data_Function["const"](b));
-    };
-};
-var setJust = function (p) {
-    return function ($24) {
-        return set(p)(Data_Maybe.Just.create($24));
-    };
-};
-var subOver = function (dictRing) {
-    return function (p) {
-        return function ($25) {
-            return over(p)(Data_Function.flip(Data_Ring.sub(dictRing))($25));
-        };
-    };
-};
-var mulOver = function (dictSemiring) {
-    return function (p) {
-        return function ($26) {
-            return over(p)(Data_Function.flip(Data_Semiring.mul(dictSemiring))($26));
-        };
-    };
-};
-var modifying = function (dictMonadState) {
-    return function (p) {
-        return function (f) {
-            return Control_Monad_State_Class.modify(dictMonadState)(over(p)(f));
-        };
-    };
-};
-var mulModifying = function (dictMonadState) {
-    return function (dictSemiring) {
-        return function (p) {
-            return function ($27) {
-                return modifying(dictMonadState)(p)(Data_Function.flip(Data_Semiring.mul(dictSemiring))($27));
-            };
-        };
-    };
-};
-var subModifying = function (dictMonadState) {
-    return function (dictRing) {
-        return function (p) {
-            return function ($28) {
-                return modifying(dictMonadState)(p)(Data_Function.flip(Data_Ring.sub(dictRing))($28));
-            };
-        };
-    };
-};
-var iover = function (l) {
-    return function (f) {
-        return l(Data_Lens_Internal_Indexed.Indexed(Data_Tuple.uncurry(f)));
-    };
-};
-var divOver = function (dictEuclideanRing) {
-    return function (p) {
-        return function ($29) {
-            return over(p)(Data_Function.flip(Data_EuclideanRing.div(dictEuclideanRing))($29));
-        };
-    };
-};
-var divModifying = function (dictMonadState) {
-    return function (dictEuclideanRing) {
-        return function (p) {
-            return function ($30) {
-                return modifying(dictMonadState)(p)(Data_Function.flip(Data_EuclideanRing.div(dictEuclideanRing))($30));
-            };
-        };
-    };
-};
-var disjOver = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function ($31) {
-            return over(p)(Data_Function.flip(Data_HeytingAlgebra.disj(dictHeytingAlgebra))($31));
-        };
-    };
-};
-var disjModifying = function (dictMonadState) {
-    return function (dictHeytingAlgebra) {
-        return function (p) {
-            return function ($32) {
-                return modifying(dictMonadState)(p)(Data_Function.flip(Data_HeytingAlgebra.disj(dictHeytingAlgebra))($32));
-            };
-        };
-    };
-};
-var conjOver = function (dictHeytingAlgebra) {
-    return function (p) {
-        return function ($33) {
-            return over(p)(Data_Function.flip(Data_HeytingAlgebra.conj(dictHeytingAlgebra))($33));
-        };
-    };
-};
-var conjModifying = function (dictMonadState) {
-    return function (dictHeytingAlgebra) {
-        return function (p) {
-            return function ($34) {
-                return modifying(dictMonadState)(p)(Data_Function.flip(Data_HeytingAlgebra.conj(dictHeytingAlgebra))($34));
-            };
-        };
-    };
-};
-var assign = function (dictMonadState) {
-    return function (p) {
-        return function (b) {
-            return Control_Monad_State_Class.modify(dictMonadState)(set(p)(b));
-        };
-    };
-};
-var assignJust = function (dictMonadState) {
-    return function (p) {
-        return function ($35) {
-            return assign(dictMonadState)(p)(Data_Maybe.Just.create($35));
-        };
-    };
-};
-var appendOver = function (dictSemigroup) {
-    return function (p) {
-        return function ($36) {
-            return over(p)(Data_Function.flip(Data_Semigroup.append(dictSemigroup))($36));
-        };
-    };
-};
-var appendModifying = function (dictMonadState) {
-    return function (dictSemigroup) {
-        return function (p) {
-            return function ($37) {
-                return modifying(dictMonadState)(p)(Data_Function.flip(Data_Semigroup.append(dictSemigroup))($37));
-            };
-        };
-    };
-};
-var addOver = function (dictSemiring) {
-    return function (p) {
-        return function ($38) {
-            return over(p)(Data_Semiring.add(dictSemiring)($38));
-        };
-    };
-};
-var addModifying = function (dictMonadState) {
-    return function (dictSemiring) {
-        return function (p) {
-            return function ($39) {
-                return modifying(dictMonadState)(p)(Data_Semiring.add(dictSemiring)($39));
-            };
-        };
-    };
-};
-module.exports = {
-    addModifying: addModifying, 
-    addOver: addOver, 
-    appendModifying: appendModifying, 
-    appendOver: appendOver, 
-    assign: assign, 
-    assignJust: assignJust, 
-    conjModifying: conjModifying, 
-    conjOver: conjOver, 
-    disjModifying: disjModifying, 
-    disjOver: disjOver, 
-    divModifying: divModifying, 
-    divOver: divOver, 
-    iover: iover, 
-    modifying: modifying, 
-    mulModifying: mulModifying, 
-    mulOver: mulOver, 
-    over: over, 
-    set: set, 
-    setJust: setJust, 
-    subModifying: subModifying, 
-    subOver: subOver
-};
-
-},{"../Control.Monad.State.Class":80,"../Control.Semigroupoid":92,"../Data.EuclideanRing":140,"../Data.Function":149,"../Data.HeytingAlgebra":160,"../Data.Lens.Internal.Indexed":174,"../Data.Lens.Types":190,"../Data.Maybe":198,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Tuple":245,"../Prelude":268}],189:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Category = require("../Control.Category");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Lens_Indexed = require("../Data.Lens.Indexed");
-var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
-var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
-var Data_Lens_Types = require("../Data.Lens.Types");
-var Data_Monoid_Disj = require("../Data.Monoid.Disj");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor_Star = require("../Data.Profunctor.Star");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var traversed = function (dictTraversable) {
-    return function (dictWander) {
-        return Data_Lens_Internal_Wander.wander(dictWander)(function (dictApplicative) {
-            return Data_Traversable.traverse(dictTraversable)(dictApplicative);
-        });
-    };
-};
-var traverseOf = function (dictApplicative) {
-    return Data_Newtype.under(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.Star);
-};
-var sequenceOf = function (dictApplicative) {
-    return function (t) {
-        return traverseOf(dictApplicative)(t)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var itraverseOf = function (dictApplicative) {
-    return function (t) {
-        return function ($24) {
-            return Data_Newtype.under(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.Star)(function ($25) {
-                return t(Data_Lens_Internal_Indexed.Indexed($25));
-            })(Data_Tuple.uncurry($24));
-        };
-    };
-};
-var failover = function (dictAlternative) {
-    return function (t) {
-        return function (f) {
-            return function (s) {
-                var v = Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar)(t(Data_Profunctor_Star.Star(function ($26) {
-                    return Data_Tuple.Tuple.create(true)(f($26));
-                })))(s);
-                if (v.value0) {
-                    return Control_Applicative.pure(dictAlternative.Applicative0())(v.value1);
-                };
-                if (!v.value0) {
-                    return Control_Plus.empty(dictAlternative.Plus1());
-                };
-                throw new Error("Failed pattern match at Data.Lens.Traversal line 55, column 18 - line 57, column 32: " + [ v.constructor.name ]);
-            };
-        };
-    };
-};
-var elementsOf = function (dictWander) {
-    return function (tr) {
-        return function (pr) {
-            return Data_Lens_Indexed.iwander(function (dictApplicative) {
-                return function (f) {
-                    return Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar)(tr(Data_Lens_Internal_Wander.wanderStar(dictApplicative))(Data_Lens_Internal_Indexed.Indexed(Data_Profunctor_Star.Star(function (v) {
-                        var $21 = pr(v.value0);
-                        if ($21) {
-                            return f(v.value0)(v.value1);
-                        };
-                        return Control_Applicative.pure(dictApplicative)(v.value1);
-                    }))));
-                };
-            })(dictWander);
-        };
-    };
-};
-var element = function (dictWander) {
-    return function (n) {
-        return function (tr) {
-            return Data_Lens_Indexed.unIndex((dictWander.Choice1()).Profunctor0())(elementsOf(dictWander)(function (dictWander1) {
-                return Data_Lens_Indexed.positions(function (dictWander2) {
-                    return tr(dictWander2);
-                })(dictWander1);
-            })(function (v) {
-                return v === n;
-            }));
-        };
-    };
-};
-module.exports = {
-    element: element, 
-    elementsOf: elementsOf, 
-    failover: failover, 
-    itraverseOf: itraverseOf, 
-    sequenceOf: sequenceOf, 
-    traverseOf: traverseOf, 
-    traversed: traversed
-};
-
-},{"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Category":47,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Function":149,"../Data.Lens.Indexed":170,"../Data.Lens.Internal.Indexed":174,"../Data.Lens.Internal.Wander":179,"../Data.Lens.Types":190,"../Data.Monoid.Disj":203,"../Data.Newtype":209,"../Data.Profunctor.Star":223,"../Data.Traversable":244,"../Data.Tuple":245,"../Prelude":268}],190:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Lens_Internal_Exchange = require("../Data.Lens.Internal.Exchange");
-var Data_Lens_Internal_Forget = require("../Data.Lens.Internal.Forget");
-var Data_Lens_Internal_Grating = require("../Data.Lens.Internal.Grating");
-var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
-var Data_Lens_Internal_Market = require("../Data.Lens.Internal.Market");
-var Data_Lens_Internal_Re = require("../Data.Lens.Internal.Re");
-var Data_Lens_Internal_Shop = require("../Data.Lens.Internal.Shop");
-var Data_Lens_Internal_Tagged = require("../Data.Lens.Internal.Tagged");
-var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-module.exports = {};
-
-},{"../Data.Lens.Internal.Exchange":171,"../Data.Lens.Internal.Forget":172,"../Data.Lens.Internal.Grating":173,"../Data.Lens.Internal.Indexed":174,"../Data.Lens.Internal.Market":175,"../Data.Lens.Internal.Re":176,"../Data.Lens.Internal.Shop":177,"../Data.Lens.Internal.Tagged":178,"../Data.Lens.Internal.Wander":179,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Data.Profunctor.Closed":219,"../Data.Profunctor.Strong":224,"../Data.Tuple":245}],191:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Lens_Common = require("../Data.Lens.Common");
-var Data_Lens_Fold = require("../Data.Lens.Fold");
-var Data_Lens_Getter = require("../Data.Lens.Getter");
-var Data_Lens_Grate = require("../Data.Lens.Grate");
-var Data_Lens_Iso = require("../Data.Lens.Iso");
-var Data_Lens_Lens = require("../Data.Lens.Lens");
-var Data_Lens_Prism = require("../Data.Lens.Prism");
-var Data_Lens_Setter = require("../Data.Lens.Setter");
-var Data_Lens_Traversal = require("../Data.Lens.Traversal");
-var Data_Lens_Types = require("../Data.Lens.Types");
-module.exports = {};
-
-},{"../Data.Lens.Common":166,"../Data.Lens.Fold":167,"../Data.Lens.Getter":168,"../Data.Lens.Grate":169,"../Data.Lens.Iso":181,"../Data.Lens.Lens":184,"../Data.Lens.Prism":187,"../Data.Lens.Setter":188,"../Data.Lens.Traversal":189,"../Data.Lens.Types":190}],192:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Bind = require("../Control.Bind");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_List = require("../Data.List");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_NonEmpty = require("../Data.NonEmpty");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Prelude = require("../Prelude");
-var uncons = function (v) {
-    return {
-        head: v.value0, 
-        tail: v.value1
-    };
-};
-var toList = function (v) {
-    return new Data_List_Types.Cons(v.value0, v.value1);
-};
-var toUnfoldable = function (dictUnfoldable) {
-    return function ($41) {
-        return Data_Unfoldable.unfoldr(dictUnfoldable)(function (xs) {
-            return Data_Functor.map(Data_Maybe.functorMaybe)(function (rec) {
-                return new Data_Tuple.Tuple(rec.head, rec.tail);
-            })(Data_List.uncons(xs));
-        })(toList($41));
-    };
-};
-var tail = function (v) {
-    return v.value1;
-};
-var singleton = function ($42) {
-    return Data_List_Types.NonEmptyList(Data_NonEmpty.singleton(Data_List_Types.plusList)($42));
-};
-var length = function (v) {
-    return 1 + Data_List.length(v.value1) | 0;
-};
-var last = function (v) {
-    return Data_Maybe.fromMaybe(v.value0)(Data_List.last(v.value1));
-};
-var init = function (v) {
-    return Data_Maybe.maybe(Data_List_Types.Nil.value)(function (v1) {
-        return new Data_List_Types.Cons(v.value0, v1);
-    })(Data_List.init(v.value1));
-};
-var head = function (v) {
-    return v.value0;
-};
-var fromList = function (v) {
-    if (v instanceof Data_List_Types.Nil) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (v instanceof Data_List_Types.Cons) {
-        return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(v.value0, v.value1));
-    };
-    throw new Error("Failed pattern match at Data.List.NonEmpty line 37, column 1 - line 37, column 25: " + [ v.constructor.name ]);
-};
-var fromFoldable = function (dictFoldable) {
-    return function ($43) {
-        return fromList(Data_List.fromFoldable(dictFoldable)($43));
-    };
-};
-var concatMap = Data_Function.flip(Control_Bind.bind(Data_List_Types.bindNonEmptyList));
-var appendFoldable = function (dictFoldable) {
-    return function (v) {
-        return function (ys) {
-            return new Data_NonEmpty.NonEmpty(v.value0, Data_Semigroup.append(Data_List_Types.semigroupList)(v.value1)(Data_List.fromFoldable(dictFoldable)(ys)));
-        };
-    };
-};
-module.exports = {
-    appendFoldable: appendFoldable, 
-    concatMap: concatMap, 
-    fromFoldable: fromFoldable, 
-    fromList: fromList, 
-    head: head, 
-    init: init, 
-    length: length, 
-    singleton: singleton, 
-    tail: tail, 
-    toList: toList, 
-    toUnfoldable: toUnfoldable, 
-    uncons: uncons
-};
-
-},{"../Control.Bind":46,"../Control.Semigroupoid":92,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.List":194,"../Data.List.Types":193,"../Data.Maybe":198,"../Data.NonEmpty":210,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Prelude":268}],193:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_NonEmpty = require("../Data.NonEmpty");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Prelude = require("../Prelude");
-var Nil = (function () {
-    function Nil() {
-
-    };
-    Nil.value = new Nil();
-    return Nil;
-})();
-var Cons = (function () {
-    function Cons(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    Cons.create = function (value0) {
-        return function (value1) {
-            return new Cons(value0, value1);
-        };
-    };
-    return Cons;
-})();
-var NonEmptyList = function (x) {
-    return x;
-};
-var toList = function (v) {
-    return new Cons(v.value0, v.value1);
-};
-var newtypeNonEmptyList = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, NonEmptyList);
-var foldableList = new Data_Foldable.Foldable(function (dictMonoid) {
-    return function (f) {
-        return Data_Foldable.foldl(foldableList)(function (acc) {
-            return function ($116) {
-                return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f($116));
-            };
-        })(Data_Monoid.mempty(dictMonoid));
-    };
-}, function (f) {
-    var go = function (__copy_b) {
-        return function (__copy_v) {
-            var b = __copy_b;
-            var v = __copy_v;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_b;
-            var __tco_v;
-            function __tco_loop(b, v) {
-                if (v instanceof Nil) {
-                    __tco_done = true;
-                    return b;
-                };
-                if (v instanceof Cons) {
-                    __tco_b = f(b)(v.value0);
-                    __tco_v = v.value1;
-                    return;
-                };
-                throw new Error("Failed pattern match at Data.List.Types line 76, column 12 - line 78, column 30: " + [ v.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(b, v);
-                b = __tco_b;
-                v = __tco_v;
-            };
-            return __tco_result;
-        };
-    };
-    return go;
-}, function (f) {
-    return function (b) {
-        var rev = function (__copy_acc) {
-            return function (__copy_v) {
-                var acc = __copy_acc;
-                var v = __copy_v;
-                var __tco_done = false;
-                var __tco_result;
-                var __tco_acc;
-                var __tco_v;
-                function __tco_loop(acc, v) {
-                    if (v instanceof Nil) {
-                        __tco_done = true;
-                        return acc;
-                    };
-                    if (v instanceof Cons) {
-                        __tco_acc = new Cons(v.value0, acc);
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.List.Types line 71, column 15 - line 73, column 33: " + [ v.constructor.name ]);
-                };
-                while (!__tco_done) {
-                    __tco_result = __tco_loop(acc, v);
-                    acc = __tco_acc;
-                    v = __tco_v;
-                };
-                return __tco_result;
-            };
-        };
-        return function ($117) {
-            return Data_Foldable.foldl(foldableList)(Data_Function.flip(f))(b)(rev(Nil.value)($117));
-        };
-    };
-});
-var foldableNonEmptyList = Data_NonEmpty.foldableNonEmpty(foldableList);
-var functorList = new Data_Functor.Functor(function (f) {
-    return Data_Foldable.foldr(foldableList)(function (x) {
-        return function (acc) {
-            return new Cons(f(x), acc);
-        };
-    })(Nil.value);
-});
-var functorNonEmptyList = Data_NonEmpty.functorNonEmpty(functorList);
-var semigroupList = new Data_Semigroup.Semigroup(function (xs) {
-    return function (ys) {
-        return Data_Foldable.foldr(foldableList)(Cons.create)(ys)(xs);
-    };
-});
-var monoidList = new Data_Monoid.Monoid(function () {
-    return semigroupList;
-}, Nil.value);
-var semigroupNonEmptyList = new Data_Semigroup.Semigroup(function (v) {
-    return function (as$prime) {
-        return new Data_NonEmpty.NonEmpty(v.value0, Data_Semigroup.append(semigroupList)(v.value1)(toList(as$prime)));
-    };
-});
-var showList = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        if (v instanceof Nil) {
-            return "Nil";
-        };
-        return "(" + (Data_Foldable.intercalate(foldableList)(Data_Monoid.monoidString)(" : ")(Data_Functor.map(functorList)(Data_Show.show(dictShow))(v)) + " : Nil)");
-    });
-};
-var showNonEmptyList = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(NonEmptyList " + (Data_Show.show(Data_NonEmpty.showNonEmpty(dictShow)(showList(dictShow)))(v) + ")");
-    });
-};
-var traversableList = new Data_Traversable.Traversable(function () {
-    return foldableList;
-}, function () {
-    return functorList;
-}, function (dictApplicative) {
-    return Data_Traversable.traverse(traversableList)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
-}, function (dictApplicative) {
-    return function (f) {
-        return function ($118) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Foldable.foldl(foldableList)(Data_Function.flip(Cons.create))(Nil.value))(Data_Foldable.foldl(foldableList)(function (acc) {
-                return function ($119) {
-                    return Control_Apply.lift2(dictApplicative.Apply0())(Data_Function.flip(Cons.create))(acc)(f($119));
-                };
-            })(Control_Applicative.pure(dictApplicative)(Nil.value))($118));
-        };
-    };
-});
-var traversableNonEmptyList = Data_NonEmpty.traversableNonEmpty(traversableList);
-var unfoldableList = new Data_Unfoldable.Unfoldable(function (f) {
-    return function (b) {
-        var go = function (__copy_source) {
-            return function (__copy_memo) {
-                var source = __copy_source;
-                var memo = __copy_memo;
-                var __tco_done = false;
-                var __tco_result;
-                var __tco_source;
-                var __tco_memo;
-                function __tco_loop(source, memo) {
-                    var v = f(source);
-                    if (v instanceof Data_Maybe.Nothing) {
-                        __tco_done = true;
-                        return Data_Foldable.foldl(foldableList)(Data_Function.flip(Cons.create))(Nil.value)(memo);
-                    };
-                    if (v instanceof Data_Maybe.Just) {
-                        __tco_source = v.value0.value1;
-                        __tco_memo = new Cons(v.value0.value0, memo);
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.List.Types line 84, column 22 - line 86, column 52: " + [ v.constructor.name ]);
-                };
-                while (!__tco_done) {
-                    __tco_result = __tco_loop(source, memo);
-                    source = __tco_source;
-                    memo = __tco_memo;
-                };
-                return __tco_result;
-            };
-        };
-        return go(b)(Nil.value);
-    };
-});
-var extendNonEmptyList = new Control_Extend.Extend(function () {
-    return functorNonEmptyList;
-}, function (f) {
-    return function (v) {
-        var go = function (a) {
-            return function (v1) {
-                return {
-                    val: new Cons(f(new Data_NonEmpty.NonEmpty(a, v1.acc)), v1.val), 
-                    acc: new Cons(a, v1.acc)
-                };
-            };
-        };
-        return new Data_NonEmpty.NonEmpty(f(v), (Data_Foldable.foldr(foldableList)(go)({
-            val: Nil.value, 
-            acc: Nil.value
-        })(v.value1)).val);
-    };
-});
-var extendList = new Control_Extend.Extend(function () {
-    return functorList;
-}, function (f) {
-    return function (v) {
-        if (v instanceof Nil) {
-            return Nil.value;
-        };
-        if (v instanceof Cons) {
-            var go = function (a$prime) {
-                return function (v1) {
-                    var acc$prime = new Cons(a$prime, v1.acc);
-                    return {
-                        val: new Cons(f(acc$prime), v1.val), 
-                        acc: acc$prime
-                    };
-                };
-            };
-            return new Cons(f(v), (Data_Foldable.foldr(foldableList)(go)({
-                val: Nil.value, 
-                acc: Nil.value
-            })(v.value1)).val);
-        };
-        throw new Error("Failed pattern match at Data.List.Types line 118, column 3 - line 118, column 21: " + [ f.constructor.name, v.constructor.name ]);
-    };
-});
-var eq1List = new Data_Eq.Eq1(function (dictEq) {
-    return function (xs) {
-        return function (ys) {
-            var go = function (__copy_v) {
-                return function (__copy_v1) {
-                    return function (__copy_v2) {
-                        var v = __copy_v;
-                        var v1 = __copy_v1;
-                        var v2 = __copy_v2;
-                        var __tco_done = false;
-                        var __tco_result;
-                        var __tco_v;
-                        var __tco_v1;
-                        var __tco_v2;
-                        function __tco_loop(v, v1, v2) {
-                            if (!v2) {
-                                __tco_done = true;
-                                return false;
-                            };
-                            if (v instanceof Nil && v1 instanceof Nil) {
-                                __tco_done = true;
-                                return v2;
-                            };
-                            if (v instanceof Cons && v1 instanceof Cons) {
-                                __tco_v = v.value1;
-                                __tco_v1 = v1.value1;
-                                __tco_v2 = v2 && Data_Eq.eq(dictEq)(v1.value0)(v.value0);
-                                return;
-                            };
-                            __tco_done = true;
-                            return false;
-                        };
-                        while (!__tco_done) {
-                            __tco_result = __tco_loop(v, v1, v2);
-                            v = __tco_v;
-                            v1 = __tco_v1;
-                            v2 = __tco_v2;
-                        };
-                        return __tco_result;
-                    };
-                };
-            };
-            return go(xs)(ys)(true);
-        };
-    };
-});
-var eqList = function (dictEq) {
-    return new Data_Eq.Eq(Data_Eq.eq1(eq1List)(dictEq));
-};
-var eqNonEmptyList = function (dictEq) {
-    return Data_NonEmpty.eqNonEmpty(eq1List)(dictEq);
-};
-var ord1List = new Data_Ord.Ord1(function () {
-    return eq1List;
-}, function (dictOrd) {
-    return function (xs) {
-        return function (ys) {
-            var go = function (__copy_v) {
-                return function (__copy_v1) {
-                    var v = __copy_v;
-                    var v1 = __copy_v1;
-                    var __tco_done = false;
-                    var __tco_result;
-                    var __tco_v;
-                    var __tco_v1;
-                    function __tco_loop(v, v1) {
-                        if (v instanceof Nil && v1 instanceof Nil) {
-                            __tco_done = true;
-                            return Data_Ordering.EQ.value;
-                        };
-                        if (v instanceof Nil) {
-                            __tco_done = true;
-                            return Data_Ordering.LT.value;
-                        };
-                        if (v1 instanceof Nil) {
-                            __tco_done = true;
-                            return Data_Ordering.GT.value;
-                        };
-                        if (v instanceof Cons && v1 instanceof Cons) {
-                            var v2 = Data_Ord.compare(dictOrd)(v.value0)(v1.value0);
-                            if (v2 instanceof Data_Ordering.EQ) {
-                                __tco_v = v.value1;
-                                __tco_v1 = v1.value1;
-                                return;
-                            };
-                            __tco_done = true;
-                            return v2;
-                        };
-                        throw new Error("Failed pattern match at Data.List.Types line 49, column 20 - line 57, column 23: " + [ v.constructor.name, v1.constructor.name ]);
-                    };
-                    while (!__tco_done) {
-                        __tco_result = __tco_loop(v, v1);
-                        v = __tco_v;
-                        v1 = __tco_v1;
-                    };
-                    return __tco_result;
-                };
-            };
-            return go(xs)(ys);
-        };
-    };
-});
-var ordList = function (dictOrd) {
-    return new Data_Ord.Ord(function () {
-        return eqList(dictOrd.Eq0());
-    }, Data_Ord.compare1(ord1List)(dictOrd));
-};
-var ordNonEmptyList = function (dictOrd) {
-    return Data_NonEmpty.ordNonEmpty(ord1List)(dictOrd);
-};
-var comonadNonEmptyList = new Control_Comonad.Comonad(function () {
-    return extendNonEmptyList;
-}, function (v) {
-    return v.value0;
-});
-var applyList = new Control_Apply.Apply(function () {
-    return functorList;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Nil) {
-            return Nil.value;
-        };
-        if (v instanceof Cons) {
-            return Data_Semigroup.append(semigroupList)(Data_Functor.map(functorList)(v.value0)(v1))(Control_Apply.apply(applyList)(v.value1)(v1));
-        };
-        throw new Error("Failed pattern match at Data.List.Types line 93, column 3 - line 93, column 20: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var applyNonEmptyList = new Control_Apply.Apply(function () {
-    return functorNonEmptyList;
-}, function (v) {
-    return function (v1) {
-        return new Data_NonEmpty.NonEmpty(v.value0(v1.value0), Data_Semigroup.append(semigroupList)(Control_Apply.apply(applyList)(v.value1)(new Cons(v1.value0, Nil.value)))(Control_Apply.apply(applyList)(new Cons(v.value0, v.value1))(v1.value1)));
-    };
-});
-var bindList = new Control_Bind.Bind(function () {
-    return applyList;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Nil) {
-            return Nil.value;
-        };
-        if (v instanceof Cons) {
-            return Data_Semigroup.append(semigroupList)(v1(v.value0))(Control_Bind.bind(bindList)(v.value1)(v1));
-        };
-        throw new Error("Failed pattern match at Data.List.Types line 100, column 3 - line 100, column 19: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var bindNonEmptyList = new Control_Bind.Bind(function () {
-    return applyNonEmptyList;
-}, function (v) {
-    return function (f) {
-        var v1 = f(v.value0);
-        return new Data_NonEmpty.NonEmpty(v1.value0, Data_Semigroup.append(semigroupList)(v1.value1)(Control_Bind.bind(bindList)(v.value1)(function ($120) {
-            return toList(f($120));
-        })));
-    };
-});
-var applicativeList = new Control_Applicative.Applicative(function () {
-    return applyList;
-}, function (a) {
-    return new Cons(a, Nil.value);
-});
-var monadList = new Control_Monad.Monad(function () {
-    return applicativeList;
-}, function () {
-    return bindList;
-});
-var altNonEmptyList = new Control_Alt.Alt(function () {
-    return functorNonEmptyList;
-}, Data_Semigroup.append(semigroupNonEmptyList));
-var altList = new Control_Alt.Alt(function () {
-    return functorList;
-}, Data_Semigroup.append(semigroupList));
-var plusList = new Control_Plus.Plus(function () {
-    return altList;
-}, Nil.value);
-var alternativeList = new Control_Alternative.Alternative(function () {
-    return applicativeList;
-}, function () {
-    return plusList;
-});
-var monadZeroList = new Control_MonadZero.MonadZero(function () {
-    return alternativeList;
-}, function () {
-    return monadList;
-});
-var monadPlusList = new Control_MonadPlus.MonadPlus(function () {
-    return monadZeroList;
-});
-var applicativeNonEmptyList = new Control_Applicative.Applicative(function () {
-    return applyNonEmptyList;
-}, function ($121) {
-    return NonEmptyList(Data_NonEmpty.singleton(plusList)($121));
-});
-var monadNonEmptyList = new Control_Monad.Monad(function () {
-    return applicativeNonEmptyList;
-}, function () {
-    return bindNonEmptyList;
-});
-module.exports = {
-    Nil: Nil, 
-    Cons: Cons, 
-    NonEmptyList: NonEmptyList, 
-    toList: toList, 
-    showList: showList, 
-    eqList: eqList, 
-    eq1List: eq1List, 
-    ordList: ordList, 
-    ord1List: ord1List, 
-    semigroupList: semigroupList, 
-    monoidList: monoidList, 
-    functorList: functorList, 
-    foldableList: foldableList, 
-    unfoldableList: unfoldableList, 
-    traversableList: traversableList, 
-    applyList: applyList, 
-    applicativeList: applicativeList, 
-    bindList: bindList, 
-    monadList: monadList, 
-    altList: altList, 
-    plusList: plusList, 
-    alternativeList: alternativeList, 
-    monadZeroList: monadZeroList, 
-    monadPlusList: monadPlusList, 
-    extendList: extendList, 
-    newtypeNonEmptyList: newtypeNonEmptyList, 
-    eqNonEmptyList: eqNonEmptyList, 
-    ordNonEmptyList: ordNonEmptyList, 
-    showNonEmptyList: showNonEmptyList, 
-    functorNonEmptyList: functorNonEmptyList, 
-    applyNonEmptyList: applyNonEmptyList, 
-    applicativeNonEmptyList: applicativeNonEmptyList, 
-    bindNonEmptyList: bindNonEmptyList, 
-    monadNonEmptyList: monadNonEmptyList, 
-    altNonEmptyList: altNonEmptyList, 
-    extendNonEmptyList: extendNonEmptyList, 
-    comonadNonEmptyList: comonadNonEmptyList, 
-    semigroupNonEmptyList: semigroupNonEmptyList, 
-    foldableNonEmptyList: foldableNonEmptyList, 
-    traversableNonEmptyList: traversableNonEmptyList
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Monad":86,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.NonEmpty":210,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Prelude":268}],194:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Lazy = require("../Control.Lazy");
-var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Boolean = require("../Data.Boolean");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_NonEmpty = require("../Data.NonEmpty");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var updateAt = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v === 0 && v2 instanceof Data_List_Types.Cons) {
-                return new Data_Maybe.Just(new Data_List_Types.Cons(v1, v2.value1));
-            };
-            if (v2 instanceof Data_List_Types.Cons) {
-                return Data_Functor.map(Data_Maybe.functorMaybe)(function (v3) {
-                    return new Data_List_Types.Cons(v2.value0, v3);
-                })(updateAt(v - 1 | 0)(v1)(v2.value1));
-            };
-            return Data_Maybe.Nothing.value;
-        };
-    };
-};
-var unzip = Data_Foldable.foldr(Data_List_Types.foldableList)(function (v) {
-    return function (v1) {
-        return new Data_Tuple.Tuple(new Data_List_Types.Cons(v.value0, v1.value0), new Data_List_Types.Cons(v.value1, v1.value1));
-    };
-})(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_Types.Nil.value));
-var uncons = function (v) {
-    if (v instanceof Data_List_Types.Nil) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (v instanceof Data_List_Types.Cons) {
-        return new Data_Maybe.Just({
-            head: v.value0, 
-            tail: v.value1
-        });
-    };
-    throw new Error("Failed pattern match at Data.List line 253, column 1 - line 253, column 21: " + [ v.constructor.name ]);
-};
-var toUnfoldable = function (dictUnfoldable) {
-    return Data_Unfoldable.unfoldr(dictUnfoldable)(function (xs) {
-        return Data_Functor.map(Data_Maybe.functorMaybe)(function (rec) {
-            return new Data_Tuple.Tuple(rec.head, rec.tail);
-        })(uncons(xs));
-    });
-};
-var tail = function (v) {
-    if (v instanceof Data_List_Types.Nil) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (v instanceof Data_List_Types.Cons) {
-        return new Data_Maybe.Just(v.value1);
-    };
-    throw new Error("Failed pattern match at Data.List line 239, column 1 - line 239, column 19: " + [ v.constructor.name ]);
-};
-var span = function (v) {
-    return function (v1) {
-        if (v1 instanceof Data_List_Types.Cons && v(v1.value0)) {
-            var v2 = span(v)(v1.value1);
-            return {
-                init: new Data_List_Types.Cons(v1.value0, v2.init), 
-                rest: v2.rest
-            };
-        };
-        return {
-            init: Data_List_Types.Nil.value, 
-            rest: v1
-        };
-    };
-};
-var singleton = function (a) {
-    return new Data_List_Types.Cons(a, Data_List_Types.Nil.value);
-};
-var sortBy = function (cmp) {
-    var merge = function (v) {
-        return function (v1) {
-            if (v instanceof Data_List_Types.Cons && v1 instanceof Data_List_Types.Cons) {
-                if (Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1.value0))(Data_Ordering.GT.value)) {
-                    return new Data_List_Types.Cons(v1.value0, merge(v)(v1.value1));
-                };
-                if (Data_Boolean.otherwise) {
-                    return new Data_List_Types.Cons(v.value0, merge(v.value1)(v1));
-                };
-            };
-            if (v instanceof Data_List_Types.Nil) {
-                return v1;
-            };
-            if (v1 instanceof Data_List_Types.Nil) {
-                return v;
-            };
-            throw new Error("Failed pattern match at Data.List line 468, column 3 - line 470, column 41: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-    var mergePairs = function (v) {
-        if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Cons) {
-            return new Data_List_Types.Cons(merge(v.value0)(v.value1.value0), mergePairs(v.value1.value1));
-        };
-        return v;
-    };
-    var mergeAll = function (__copy_v) {
-        var v = __copy_v;
-        var __tco_done = false;
-        var __tco_result;
-        var __tco_v;
-        function __tco_loop(v) {
-            if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {
-                __tco_done = true;
-                return v.value0;
-            };
-            __tco_v = mergePairs(v);
-            return;
-        };
-        while (!__tco_done) {
-            __tco_result = __tco_loop(v);
-            v = __tco_v;
-        };
-        return __tco_result;
-    };
-    var sequences = function (v) {
-        if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Cons) {
-            if (Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v.value1.value0))(Data_Ordering.GT.value)) {
-                return descending(v.value1.value0)(singleton(v.value0))(v.value1.value1);
-            };
-            if (Data_Boolean.otherwise) {
-                return ascending(v.value1.value0)(function (v1) {
-                    return new Data_List_Types.Cons(v.value0, v1);
-                })(v.value1.value1);
-            };
-        };
-        return singleton(v);
-    };
-    var descending = function (__copy_a) {
-        return function (__copy_as) {
-            return function (__copy_v) {
-                var a = __copy_a;
-                var as = __copy_as;
-                var v = __copy_v;
-                var __tco_done = false;
-                var __tco_result;
-                var __tco_a;
-                var __tco_as;
-                var __tco_v;
-                function __tco_loop(a, as, v) {
-                    if (v instanceof Data_List_Types.Cons && Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(a)(v.value0))(Data_Ordering.GT.value)) {
-                        __tco_a = v.value0;
-                        __tco_as = new Data_List_Types.Cons(a, as);
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    __tco_done = true;
-                    return new Data_List_Types.Cons(new Data_List_Types.Cons(a, as), sequences(v));
-                };
-                while (!__tco_done) {
-                    __tco_result = __tco_loop(a, as, v);
-                    a = __tco_a;
-                    as = __tco_as;
-                    v = __tco_v;
-                };
-                return __tco_result;
-            };
-        };
-    };
-    var ascending = function (__copy_a) {
-        return function (__copy_as) {
-            return function (__copy_v) {
-                var a = __copy_a;
-                var as = __copy_as;
-                var v = __copy_v;
-                var __tco_done = false;
-                var __tco_result;
-                var __tco_a;
-                var __tco_as;
-                var __tco_v;
-                function __tco_loop(a, as, v) {
-                    if (v instanceof Data_List_Types.Cons && Data_Eq.notEq(Data_Ordering.eqOrdering)(cmp(a)(v.value0))(Data_Ordering.GT.value)) {
-                        __tco_a = v.value0;
-                        __tco_as = function (ys) {
-                            return as(new Data_List_Types.Cons(a, ys));
-                        };
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    __tco_done = true;
-                    return new Data_List_Types.Cons(as(singleton(a)), sequences(v));
-                };
-                while (!__tco_done) {
-                    __tco_result = __tco_loop(a, as, v);
-                    a = __tco_a;
-                    as = __tco_as;
-                    v = __tco_v;
-                };
-                return __tco_result;
-            };
-        };
-    };
-    return function ($304) {
-        return mergeAll(sequences($304));
-    };
-};
-var sort = function (dictOrd) {
-    return function (xs) {
-        return sortBy(Data_Ord.compare(dictOrd))(xs);
-    };
-};
-var reverse = (function () {
-    var go = function (__copy_acc) {
-        return function (__copy_v) {
-            var acc = __copy_acc;
-            var v = __copy_v;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_acc;
-            var __tco_v;
-            function __tco_loop(acc, v) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return acc;
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    __tco_acc = new Data_List_Types.Cons(v.value0, acc);
-                    __tco_v = v.value1;
-                    return;
-                };
-                throw new Error("Failed pattern match at Data.List line 359, column 11 - line 362, column 36: " + [ acc.constructor.name, v.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(acc, v);
-                acc = __tco_acc;
-                v = __tco_v;
-            };
-            return __tco_result;
-        };
-    };
-    return go(Data_List_Types.Nil.value);
-})();
-var snoc = function (xs) {
-    return function (x) {
-        return reverse(new Data_List_Types.Cons(x, reverse(xs)));
-    };
-};
-var take = (function () {
-    var go = function (__copy_acc) {
-        return function (__copy_v) {
-            return function (__copy_v1) {
-                var acc = __copy_acc;
-                var v = __copy_v;
-                var v1 = __copy_v1;
-                var __tco_done = false;
-                var __tco_result;
-                var __tco_acc;
-                var __tco_v;
-                var __tco_v1;
-                function __tco_loop(acc, v, v1) {
-                    if (v === 0) {
-                        __tco_done = true;
-                        return reverse(acc);
-                    };
-                    if (v1 instanceof Data_List_Types.Nil) {
-                        __tco_done = true;
-                        return reverse(acc);
-                    };
-                    if (v1 instanceof Data_List_Types.Cons) {
-                        __tco_acc = new Data_List_Types.Cons(v1.value0, acc);
-                        __tco_v = v - 1 | 0;
-                        __tco_v1 = v1.value1;
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.List line 486, column 8 - line 490, column 46: " + [ acc.constructor.name, v.constructor.name, v1.constructor.name ]);
-                };
-                while (!__tco_done) {
-                    __tco_result = __tco_loop(acc, v, v1);
-                    acc = __tco_acc;
-                    v = __tco_v;
-                    v1 = __tco_v1;
-                };
-                return __tco_result;
-            };
-        };
-    };
-    return go(Data_List_Types.Nil.value);
-})();
-var takeWhile = function (p) {
-    var go = function (__copy_acc) {
-        return function (__copy_v) {
-            var acc = __copy_acc;
-            var v = __copy_v;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_acc;
-            var __tco_v;
-            function __tco_loop(acc, v) {
-                if (v instanceof Data_List_Types.Cons && p(v.value0)) {
-                    __tco_acc = new Data_List_Types.Cons(v.value0, acc);
-                    __tco_v = v.value1;
-                    return;
-                };
-                __tco_done = true;
-                return reverse(acc);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(acc, v);
-                acc = __tco_acc;
-                v = __tco_v;
-            };
-            return __tco_result;
-        };
-    };
-    return go(Data_List_Types.Nil.value);
-};
-var unsnoc = function (lst) {
-    var go = function (__copy_v) {
-        return function (__copy_acc) {
-            var v = __copy_v;
-            var acc = __copy_acc;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_v;
-            var __tco_acc;
-            function __tco_loop(v, acc) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return Data_Maybe.Nothing.value;
-                };
-                if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return new Data_Maybe.Just({
-                        revInit: acc, 
-                        last: v.value0
-                    });
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    __tco_v = v.value1;
-                    __tco_acc = new Data_List_Types.Cons(v.value0, acc);
-                    return;
-                };
-                throw new Error("Failed pattern match at Data.List line 261, column 14 - line 265, column 36: " + [ v.constructor.name, acc.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(v, acc);
-                v = __tco_v;
-                acc = __tco_acc;
-            };
-            return __tco_result;
-        };
-    };
-    return Data_Functor.map(Data_Maybe.functorMaybe)(function (h) {
-        return {
-            init: reverse(h.revInit), 
-            last: h.last
-        };
-    })(go(lst)(Data_List_Types.Nil.value));
-};
-var zipWith = function (f) {
-    return function (xs) {
-        return function (ys) {
-            var go = function (__copy_v) {
-                return function (__copy_v1) {
-                    return function (__copy_acc) {
-                        var v = __copy_v;
-                        var v1 = __copy_v1;
-                        var acc = __copy_acc;
-                        var __tco_done = false;
-                        var __tco_result;
-                        var __tco_v;
-                        var __tco_v1;
-                        var __tco_acc;
-                        function __tco_loop(v, v1, acc) {
-                            if (v instanceof Data_List_Types.Nil) {
-                                __tco_done = true;
-                                return acc;
-                            };
-                            if (v1 instanceof Data_List_Types.Nil) {
-                                __tco_done = true;
-                                return acc;
-                            };
-                            if (v instanceof Data_List_Types.Cons && v1 instanceof Data_List_Types.Cons) {
-                                __tco_v = v.value1;
-                                __tco_v1 = v1.value1;
-                                __tco_acc = new Data_List_Types.Cons(f(v.value0)(v1.value0), acc);
-                                return;
-                            };
-                            throw new Error("Failed pattern match at Data.List line 650, column 19 - line 654, column 52: " + [ v.constructor.name, v1.constructor.name, acc.constructor.name ]);
-                        };
-                        while (!__tco_done) {
-                            __tco_result = __tco_loop(v, v1, acc);
-                            v = __tco_v;
-                            v1 = __tco_v1;
-                            acc = __tco_acc;
-                        };
-                        return __tco_result;
-                    };
-                };
-            };
-            return reverse(go(xs)(ys)(Data_List_Types.Nil.value));
-        };
-    };
-};
-var zip = zipWith(Data_Tuple.Tuple.create);
-var zipWithA = function (dictApplicative) {
-    return function (f) {
-        return function (xs) {
-            return function (ys) {
-                return Data_Traversable.sequence(Data_List_Types.traversableList)(dictApplicative)(zipWith(f)(xs)(ys));
-            };
-        };
-    };
-};
-var range = function (start) {
-    return function (end) {
-        if (start === end) {
-            return singleton(start);
-        };
-        if (Data_Boolean.otherwise) {
-            var go = function (__copy_s) {
-                return function (__copy_e) {
-                    return function (__copy_step) {
-                        return function (__copy_rest) {
-                            var s = __copy_s;
-                            var e = __copy_e;
-                            var step = __copy_step;
-                            var rest = __copy_rest;
-                            var __tco_done = false;
-                            var __tco_result;
-                            var __tco_s;
-                            var __tco_e;
-                            var __tco_step;
-                            var __tco_rest;
-                            function __tco_loop(s, e, step, rest) {
-                                if (s === e) {
-                                    __tco_done = true;
-                                    return new Data_List_Types.Cons(s, rest);
-                                };
-                                if (Data_Boolean.otherwise) {
-                                    __tco_s = s + step | 0;
-                                    __tco_e = e;
-                                    __tco_step = step;
-                                    __tco_rest = new Data_List_Types.Cons(s, rest);
-                                    return;
-                                };
-                                throw new Error("Failed pattern match at Data.List line 139, column 31 - line 142, column 65: " + [ s.constructor.name, e.constructor.name, step.constructor.name, rest.constructor.name ]);
-                            };
-                            while (!__tco_done) {
-                                __tco_result = __tco_loop(s, e, step, rest);
-                                s = __tco_s;
-                                e = __tco_e;
-                                step = __tco_step;
-                                rest = __tco_rest;
-                            };
-                            return __tco_result;
-                        };
-                    };
-                };
-            };
-            return go(end)(start)((function () {
-                var $195 = start > end;
-                if ($195) {
-                    return 1;
-                };
-                return -1 | 0;
-            })())(Data_List_Types.Nil.value);
-        };
-        throw new Error("Failed pattern match at Data.List line 138, column 1 - line 142, column 65: " + [ start.constructor.name, end.constructor.name ]);
-    };
-};
-var $$null = function (v) {
-    if (v instanceof Data_List_Types.Nil) {
-        return true;
-    };
-    return false;
-};
-var mapWithIndex = function (f) {
-    return function (lst) {
-        var go = function (__copy_v) {
-            return function (__copy_v1) {
-                return function (__copy_acc) {
-                    var v = __copy_v;
-                    var v1 = __copy_v1;
-                    var acc = __copy_acc;
-                    var __tco_done = false;
-                    var __tco_result;
-                    var __tco_v;
-                    var __tco_v1;
-                    var __tco_acc;
-                    function __tco_loop(v, v1, acc) {
-                        if (v1 instanceof Data_List_Types.Nil) {
-                            __tco_done = true;
-                            return acc;
-                        };
-                        if (v1 instanceof Data_List_Types.Cons) {
-                            __tco_v = v + 1 | 0;
-                            __tco_v1 = v1.value1;
-                            __tco_acc = new Data_List_Types.Cons(f(v)(v1.value0), acc);
-                            return;
-                        };
-                        throw new Error("Failed pattern match at Data.List line 424, column 22 - line 427, column 48: " + [ v.constructor.name, v1.constructor.name, acc.constructor.name ]);
-                    };
-                    while (!__tco_done) {
-                        __tco_result = __tco_loop(v, v1, acc);
-                        v = __tco_v;
-                        v1 = __tco_v1;
-                        acc = __tco_acc;
-                    };
-                    return __tco_result;
-                };
-            };
-        };
-        return reverse(go(0)(lst)(Data_List_Types.Nil.value));
-    };
-};
-var mapMaybe = function (f) {
-    var go = function (__copy_acc) {
-        return function (__copy_v) {
-            var acc = __copy_acc;
-            var v = __copy_v;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_acc;
-            var __tco_v;
-            function __tco_loop(acc, v) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return reverse(acc);
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    var v1 = f(v.value0);
-                    if (v1 instanceof Data_Maybe.Nothing) {
-                        __tco_acc = acc;
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    if (v1 instanceof Data_Maybe.Just) {
-                        __tco_acc = new Data_List_Types.Cons(v1.value0, acc);
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.List line 412, column 5 - line 414, column 32: " + [ v1.constructor.name ]);
-                };
-                throw new Error("Failed pattern match at Data.List line 408, column 14 - line 414, column 32: " + [ acc.constructor.name, v.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(acc, v);
-                acc = __tco_acc;
-                v = __tco_v;
-            };
-            return __tco_result;
-        };
-    };
-    return go(Data_List_Types.Nil.value);
-};
-var manyRec = function (dictMonadRec) {
-    return function (dictAlternative) {
-        return function (p) {
-            var go = function (acc) {
-                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(Control_Alt.alt((dictAlternative.Plus1()).Alt0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())(Control_Monad_Rec_Class.Loop.create)(p))(Control_Applicative.pure(dictAlternative.Applicative0())(new Control_Monad_Rec_Class.Done(Data_Unit.unit))))(function (v) {
-                    return Control_Applicative.pure(dictAlternative.Applicative0())(Data_Bifunctor.bimap(Control_Monad_Rec_Class.bifunctorStep)(function (v1) {
-                        return new Data_List_Types.Cons(v1, acc);
-                    })(function (v1) {
-                        return reverse(acc);
-                    })(v));
-                });
-            };
-            return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go)(Data_List_Types.Nil.value);
-        };
-    };
-};
-var someRec = function (dictMonadRec) {
-    return function (dictAlternative) {
-        return function (v) {
-            return Control_Apply.apply((dictAlternative.Applicative0()).Apply0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())(Data_List_Types.Cons.create)(v))(manyRec(dictMonadRec)(dictAlternative)(v));
-        };
-    };
-};
-var some = function (dictAlternative) {
-    return function (dictLazy) {
-        return function (v) {
-            return Control_Apply.apply((dictAlternative.Applicative0()).Apply0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())(Data_List_Types.Cons.create)(v))(Control_Lazy.defer(dictLazy)(function (v1) {
-                return many(dictAlternative)(dictLazy)(v);
-            }));
-        };
-    };
-};
-var many = function (dictAlternative) {
-    return function (dictLazy) {
-        return function (v) {
-            return Control_Alt.alt((dictAlternative.Plus1()).Alt0())(some(dictAlternative)(dictLazy)(v))(Control_Applicative.pure(dictAlternative.Applicative0())(Data_List_Types.Nil.value));
-        };
-    };
-};
-var length = Data_Foldable.foldl(Data_List_Types.foldableList)(function (acc) {
-    return function (v) {
-        return acc + 1 | 0;
-    };
-})(0);
-var last = function (__copy_v) {
-    var v = __copy_v;
-    var __tco_done = false;
-    var __tco_result;
-    var __tco_v;
-    function __tco_loop(v) {
-        if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {
-            __tco_done = true;
-            return new Data_Maybe.Just(v.value0);
-        };
-        if (v instanceof Data_List_Types.Cons) {
-            __tco_v = v.value1;
-            return;
-        };
-        __tco_done = true;
-        return Data_Maybe.Nothing.value;
-    };
-    while (!__tco_done) {
-        __tco_result = __tco_loop(v);
-        v = __tco_v;
-    };
-    return __tco_result;
-};
-var insertBy = function (v) {
-    return function (x) {
-        return function (v1) {
-            if (v1 instanceof Data_List_Types.Nil) {
-                return singleton(x);
-            };
-            if (v1 instanceof Data_List_Types.Cons) {
-                var v2 = v(x)(v1.value0);
-                if (v2 instanceof Data_Ordering.GT) {
-                    return new Data_List_Types.Cons(v1.value0, insertBy(v)(x)(v1.value1));
-                };
-                return new Data_List_Types.Cons(x, v1);
-            };
-            throw new Error("Failed pattern match at Data.List line 210, column 1 - line 210, column 31: " + [ v.constructor.name, x.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var insertAt = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v === 0) {
-                return new Data_Maybe.Just(new Data_List_Types.Cons(v1, v2));
-            };
-            if (v2 instanceof Data_List_Types.Cons) {
-                return Data_Functor.map(Data_Maybe.functorMaybe)(function (v3) {
-                    return new Data_List_Types.Cons(v2.value0, v3);
-                })(insertAt(v - 1 | 0)(v1)(v2.value1));
-            };
-            return Data_Maybe.Nothing.value;
-        };
-    };
-};
-var insert = function (dictOrd) {
-    return insertBy(Data_Ord.compare(dictOrd));
-};
-var init = function (lst) {
-    return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
-        return v.init;
-    })(unsnoc(lst));
-};
-var index = function (__copy_v) {
-    return function (__copy_v1) {
-        var v = __copy_v;
-        var v1 = __copy_v1;
-        var __tco_done = false;
-        var __tco_result;
-        var __tco_v;
-        var __tco_v1;
-        function __tco_loop(v, v1) {
-            if (v instanceof Data_List_Types.Nil) {
-                __tco_done = true;
-                return Data_Maybe.Nothing.value;
-            };
-            if (v instanceof Data_List_Types.Cons && v1 === 0) {
-                __tco_done = true;
-                return new Data_Maybe.Just(v.value0);
-            };
-            if (v instanceof Data_List_Types.Cons) {
-                __tco_v = v.value1;
-                __tco_v1 = v1 - 1 | 0;
-                return;
-            };
-            throw new Error("Failed pattern match at Data.List line 275, column 1 - line 275, column 22: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-        while (!__tco_done) {
-            __tco_result = __tco_loop(v, v1);
-            v = __tco_v;
-            v1 = __tco_v1;
-        };
-        return __tco_result;
-    };
-};
-var head = function (v) {
-    if (v instanceof Data_List_Types.Nil) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (v instanceof Data_List_Types.Cons) {
-        return new Data_Maybe.Just(v.value0);
-    };
-    throw new Error("Failed pattern match at Data.List line 224, column 1 - line 224, column 19: " + [ v.constructor.name ]);
-};
-var transpose = function (v) {
-    if (v instanceof Data_List_Types.Nil) {
-        return Data_List_Types.Nil.value;
-    };
-    if (v instanceof Data_List_Types.Cons && v.value0 instanceof Data_List_Types.Nil) {
-        return transpose(v.value1);
-    };
-    if (v instanceof Data_List_Types.Cons && v.value0 instanceof Data_List_Types.Cons) {
-        return new Data_List_Types.Cons(new Data_List_Types.Cons(v.value0.value0, mapMaybe(head)(v.value1)), transpose(new Data_List_Types.Cons(v.value0.value1, mapMaybe(tail)(v.value1))));
-    };
-    throw new Error("Failed pattern match at Data.List line 687, column 1 - line 687, column 20: " + [ v.constructor.name ]);
-};
-var groupBy = function (v) {
-    return function (v1) {
-        if (v1 instanceof Data_List_Types.Nil) {
-            return Data_List_Types.Nil.value;
-        };
-        if (v1 instanceof Data_List_Types.Cons) {
-            var v2 = span(v(v1.value0))(v1.value1);
-            return new Data_List_Types.Cons(new Data_NonEmpty.NonEmpty(v1.value0, v2.init), groupBy(v)(v2.rest));
-        };
-        throw new Error("Failed pattern match at Data.List line 560, column 1 - line 560, column 20: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-};
-var group = function (dictEq) {
-    return groupBy(Data_Eq.eq(dictEq));
-};
-var group$prime = function (dictOrd) {
-    return function ($305) {
-        return group(dictOrd.Eq0())(sort(dictOrd)($305));
-    };
-};
-var fromFoldable = function (dictFoldable) {
-    return Data_Foldable.foldr(dictFoldable)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);
-};
-var foldM = function (dictMonad) {
-    return function (v) {
-        return function (a) {
-            return function (v1) {
-                if (v1 instanceof Data_List_Types.Nil) {
-                    return Control_Applicative.pure(dictMonad.Applicative0())(a);
-                };
-                if (v1 instanceof Data_List_Types.Cons) {
-                    return Control_Bind.bind(dictMonad.Bind1())(v(a)(v1.value0))(function (a$prime) {
-                        return foldM(dictMonad)(v)(a$prime)(v1.value1);
-                    });
-                };
-                throw new Error("Failed pattern match at Data.List line 698, column 1 - line 698, column 23: " + [ v.constructor.name, a.constructor.name, v1.constructor.name ]);
-            };
-        };
-    };
-};
-var findIndex = function (fn) {
-    var go = function (__copy_v) {
-        return function (__copy_v1) {
-            var v = __copy_v;
-            var v1 = __copy_v1;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_v;
-            var __tco_v1;
-            function __tco_loop(v, v1) {
-                if (v1 instanceof Data_List_Types.Cons) {
-                    if (fn(v1.value0)) {
-                        __tco_done = true;
-                        return new Data_Maybe.Just(v);
-                    };
-                    if (Data_Boolean.otherwise) {
-                        __tco_v = v + 1 | 0;
-                        __tco_v1 = v1.value1;
-                        return;
-                    };
-                };
-                if (v1 instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return Data_Maybe.Nothing.value;
-                };
-                throw new Error("Failed pattern match at Data.List line 295, column 3 - line 296, column 44: " + [ v.constructor.name, v1.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(v, v1);
-                v = __tco_v;
-                v1 = __tco_v1;
-            };
-            return __tco_result;
-        };
-    };
-    return go(0);
-};
-var findLastIndex = function (fn) {
-    return function (xs) {
-        return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
-            return (length(xs) - 1 | 0) - v | 0;
-        })(findIndex(fn)(reverse(xs)));
-    };
-};
-var filterM = function (dictMonad) {
-    return function (v) {
-        return function (v1) {
-            if (v1 instanceof Data_List_Types.Nil) {
-                return Control_Applicative.pure(dictMonad.Applicative0())(Data_List_Types.Nil.value);
-            };
-            if (v1 instanceof Data_List_Types.Cons) {
-                return Control_Bind.bind(dictMonad.Bind1())(v(v1.value0))(function (v2) {
-                    return Control_Bind.bind(dictMonad.Bind1())(filterM(dictMonad)(v)(v1.value1))(function (v3) {
-                        return Control_Applicative.pure(dictMonad.Applicative0())((function () {
-                            if (v2) {
-                                return new Data_List_Types.Cons(v1.value0, v3);
-                            };
-                            return v3;
-                        })());
-                    });
-                });
-            };
-            throw new Error("Failed pattern match at Data.List line 397, column 1 - line 397, column 25: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var filter = function (p) {
-    var go = function (__copy_acc) {
-        return function (__copy_v) {
-            var acc = __copy_acc;
-            var v = __copy_v;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_acc;
-            var __tco_v;
-            function __tco_loop(acc, v) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return reverse(acc);
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    if (p(v.value0)) {
-                        __tco_acc = new Data_List_Types.Cons(v.value0, acc);
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    if (Data_Boolean.otherwise) {
-                        __tco_acc = acc;
-                        __tco_v = v.value1;
-                        return;
-                    };
-                };
-                throw new Error("Failed pattern match at Data.List line 381, column 12 - line 386, column 28: " + [ acc.constructor.name, v.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(acc, v);
-                acc = __tco_acc;
-                v = __tco_v;
-            };
-            return __tco_result;
-        };
-    };
-    return go(Data_List_Types.Nil.value);
-};
-var intersectBy = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v1 instanceof Data_List_Types.Nil) {
-                return Data_List_Types.Nil.value;
-            };
-            if (v2 instanceof Data_List_Types.Nil) {
-                return Data_List_Types.Nil.value;
-            };
-            return filter(function (x) {
-                return Data_Foldable.any(Data_List_Types.foldableList)(Data_HeytingAlgebra.heytingAlgebraBoolean)(v(x))(v2);
-            })(v1);
-        };
-    };
-};
-var intersect = function (dictEq) {
-    return intersectBy(Data_Eq.eq(dictEq));
-};
-var nubBy = function (v) {
-    return function (v1) {
-        if (v1 instanceof Data_List_Types.Nil) {
-            return Data_List_Types.Nil.value;
-        };
-        if (v1 instanceof Data_List_Types.Cons) {
-            return new Data_List_Types.Cons(v1.value0, nubBy(v)(filter(function (y) {
-                return !v(v1.value0)(y);
-            })(v1.value1)));
-        };
-        throw new Error("Failed pattern match at Data.List line 579, column 1 - line 579, column 22: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-};
-var nub = function (dictEq) {
-    return nubBy(Data_Eq.eq(dictEq));
-};
-var elemLastIndex = function (dictEq) {
-    return function (x) {
-        return findLastIndex(function (v) {
-            return Data_Eq.eq(dictEq)(v)(x);
-        });
-    };
-};
-var elemIndex = function (dictEq) {
-    return function (x) {
-        return findIndex(function (v) {
-            return Data_Eq.eq(dictEq)(v)(x);
-        });
-    };
-};
-var dropWhile = function (p) {
-    var go = function (__copy_v) {
-        var v = __copy_v;
-        var __tco_done = false;
-        var __tco_result;
-        var __tco_v;
-        function __tco_loop(v) {
-            if (v instanceof Data_List_Types.Cons && p(v.value0)) {
-                __tco_v = v.value1;
-                return;
-            };
-            __tco_done = true;
-            return v;
-        };
-        while (!__tco_done) {
-            __tco_result = __tco_loop(v);
-            v = __tco_v;
-        };
-        return __tco_result;
-    };
-    return go;
-};
-var drop = function (__copy_v) {
-    return function (__copy_v1) {
-        var v = __copy_v;
-        var v1 = __copy_v1;
-        var __tco_done = false;
-        var __tco_result;
-        var __tco_v;
-        var __tco_v1;
-        function __tco_loop(v, v1) {
-            if (v === 0) {
-                __tco_done = true;
-                return v1;
-            };
-            if (v1 instanceof Data_List_Types.Nil) {
-                __tco_done = true;
-                return Data_List_Types.Nil.value;
-            };
-            if (v1 instanceof Data_List_Types.Cons) {
-                __tco_v = v - 1 | 0;
-                __tco_v1 = v1.value1;
-                return;
-            };
-            throw new Error("Failed pattern match at Data.List line 505, column 1 - line 505, column 15: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-        while (!__tco_done) {
-            __tco_result = __tco_loop(v, v1);
-            v = __tco_v;
-            v1 = __tco_v1;
-        };
-        return __tco_result;
-    };
-};
-var slice = function (start) {
-    return function (end) {
-        return function (xs) {
-            return take(end - start | 0)(drop(start)(xs));
-        };
-    };
-};
-var deleteBy = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v2 instanceof Data_List_Types.Nil) {
-                return Data_List_Types.Nil.value;
-            };
-            if (v2 instanceof Data_List_Types.Cons && v(v1)(v2.value0)) {
-                return v2.value1;
-            };
-            if (v2 instanceof Data_List_Types.Cons) {
-                return new Data_List_Types.Cons(v2.value0, deleteBy(v)(v1)(v2.value1));
-            };
-            throw new Error("Failed pattern match at Data.List line 606, column 1 - line 606, column 23: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-        };
-    };
-};
-var unionBy = function (eq) {
-    return function (xs) {
-        return function (ys) {
-            return Data_Semigroup.append(Data_List_Types.semigroupList)(xs)(Data_Foldable.foldl(Data_List_Types.foldableList)(Data_Function.flip(deleteBy(eq)))(nubBy(eq)(ys))(xs));
-        };
-    };
-};
-var union = function (dictEq) {
-    return unionBy(Data_Eq.eq(dictEq));
-};
-var deleteAt = function (v) {
-    return function (v1) {
-        if (v === 0 && v1 instanceof Data_List_Types.Cons) {
-            return new Data_Maybe.Just(v1.value1);
-        };
-        if (v1 instanceof Data_List_Types.Cons) {
-            return Data_Functor.map(Data_Maybe.functorMaybe)(function (v2) {
-                return new Data_List_Types.Cons(v1.value0, v2);
-            })(deleteAt(v - 1 | 0)(v1.value1));
-        };
-        return Data_Maybe.Nothing.value;
-    };
-};
-var $$delete = function (dictEq) {
-    return deleteBy(Data_Eq.eq(dictEq));
-};
-var difference = function (dictEq) {
-    return Data_Foldable.foldl(Data_List_Types.foldableList)(Data_Function.flip($$delete(dictEq)));
-};
-var concatMap = Data_Function.flip(Control_Bind.bind(Data_List_Types.bindList));
-var concat = function (v) {
-    return Control_Bind.bind(Data_List_Types.bindList)(v)(Control_Category.id(Control_Category.categoryFn));
-};
-var catMaybes = mapMaybe(Control_Category.id(Control_Category.categoryFn));
-var alterAt = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v === 0 && v2 instanceof Data_List_Types.Cons) {
-                return Data_Maybe.Just.create((function () {
-                    var v3 = v1(v2.value0);
-                    if (v3 instanceof Data_Maybe.Nothing) {
-                        return v2.value1;
-                    };
-                    if (v3 instanceof Data_Maybe.Just) {
-                        return new Data_List_Types.Cons(v3.value0, v2.value1);
-                    };
-                    throw new Error("Failed pattern match at Data.List line 345, column 3 - line 347, column 23: " + [ v3.constructor.name ]);
-                })());
-            };
-            if (v2 instanceof Data_List_Types.Cons) {
-                return Data_Functor.map(Data_Maybe.functorMaybe)(function (v3) {
-                    return new Data_List_Types.Cons(v2.value0, v3);
-                })(alterAt(v - 1 | 0)(v1)(v2.value1));
-            };
-            return Data_Maybe.Nothing.value;
-        };
-    };
-};
-var modifyAt = function (n) {
-    return function (f) {
-        return alterAt(n)(function ($306) {
-            return Data_Maybe.Just.create(f($306));
-        });
-    };
-};
-module.exports = {
-    alterAt: alterAt, 
-    catMaybes: catMaybes, 
-    concat: concat, 
-    concatMap: concatMap, 
-    "delete": $$delete, 
-    deleteAt: deleteAt, 
-    deleteBy: deleteBy, 
-    difference: difference, 
-    drop: drop, 
-    dropWhile: dropWhile, 
-    elemIndex: elemIndex, 
-    elemLastIndex: elemLastIndex, 
-    filter: filter, 
-    filterM: filterM, 
-    findIndex: findIndex, 
-    findLastIndex: findLastIndex, 
-    foldM: foldM, 
-    fromFoldable: fromFoldable, 
-    group: group, 
-    "group'": group$prime, 
-    groupBy: groupBy, 
-    head: head, 
-    index: index, 
-    init: init, 
-    insert: insert, 
-    insertAt: insertAt, 
-    insertBy: insertBy, 
-    intersect: intersect, 
-    intersectBy: intersectBy, 
-    last: last, 
-    length: length, 
-    many: many, 
-    manyRec: manyRec, 
-    mapMaybe: mapMaybe, 
-    mapWithIndex: mapWithIndex, 
-    modifyAt: modifyAt, 
-    nub: nub, 
-    nubBy: nubBy, 
-    "null": $$null, 
-    range: range, 
-    reverse: reverse, 
-    singleton: singleton, 
-    slice: slice, 
-    snoc: snoc, 
-    some: some, 
-    someRec: someRec, 
-    sort: sort, 
-    sortBy: sortBy, 
-    span: span, 
-    tail: tail, 
-    take: take, 
-    takeWhile: takeWhile, 
-    toUnfoldable: toUnfoldable, 
-    transpose: transpose, 
-    uncons: uncons, 
-    union: union, 
-    unionBy: unionBy, 
-    unsnoc: unsnoc, 
-    unzip: unzip, 
-    updateAt: updateAt, 
-    zip: zip, 
-    zipWith: zipWith, 
-    zipWithA: zipWithA
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Lazy":50,"../Control.Monad.Rec.Class":77,"../Control.Semigroupoid":92,"../Data.Bifunctor":127,"../Data.Boolean":129,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.List.Types":193,"../Data.Maybe":198,"../Data.NonEmpty":210,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Data.Unit":249,"../Prelude":268}],195:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_List = require("../Data.List");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Partial_Unsafe = require("../Partial.Unsafe");
-var Prelude = require("../Prelude");
-var Leaf = (function () {
-    function Leaf() {
-
-    };
-    Leaf.value = new Leaf();
-    return Leaf;
-})();
-var Two = (function () {
-    function Two(value0, value1, value2, value3) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-        this.value3 = value3;
-    };
-    Two.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return function (value3) {
-                    return new Two(value0, value1, value2, value3);
-                };
-            };
-        };
-    };
-    return Two;
-})();
-var Three = (function () {
-    function Three(value0, value1, value2, value3, value4, value5, value6) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-        this.value3 = value3;
-        this.value4 = value4;
-        this.value5 = value5;
-        this.value6 = value6;
-    };
-    Three.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return function (value3) {
-                    return function (value4) {
-                        return function (value5) {
-                            return function (value6) {
-                                return new Three(value0, value1, value2, value3, value4, value5, value6);
-                            };
-                        };
-                    };
-                };
-            };
-        };
-    };
-    return Three;
-})();
-var TwoLeft = (function () {
-    function TwoLeft(value0, value1, value2) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-    };
-    TwoLeft.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return new TwoLeft(value0, value1, value2);
-            };
-        };
-    };
-    return TwoLeft;
-})();
-var TwoRight = (function () {
-    function TwoRight(value0, value1, value2) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-    };
-    TwoRight.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return new TwoRight(value0, value1, value2);
-            };
-        };
-    };
-    return TwoRight;
-})();
-var ThreeLeft = (function () {
-    function ThreeLeft(value0, value1, value2, value3, value4, value5) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-        this.value3 = value3;
-        this.value4 = value4;
-        this.value5 = value5;
-    };
-    ThreeLeft.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return function (value3) {
-                    return function (value4) {
-                        return function (value5) {
-                            return new ThreeLeft(value0, value1, value2, value3, value4, value5);
-                        };
-                    };
-                };
-            };
-        };
-    };
-    return ThreeLeft;
-})();
-var ThreeMiddle = (function () {
-    function ThreeMiddle(value0, value1, value2, value3, value4, value5) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-        this.value3 = value3;
-        this.value4 = value4;
-        this.value5 = value5;
-    };
-    ThreeMiddle.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return function (value3) {
-                    return function (value4) {
-                        return function (value5) {
-                            return new ThreeMiddle(value0, value1, value2, value3, value4, value5);
-                        };
-                    };
-                };
-            };
-        };
-    };
-    return ThreeMiddle;
-})();
-var ThreeRight = (function () {
-    function ThreeRight(value0, value1, value2, value3, value4, value5) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-        this.value3 = value3;
-        this.value4 = value4;
-        this.value5 = value5;
-    };
-    ThreeRight.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return function (value3) {
-                    return function (value4) {
-                        return function (value5) {
-                            return new ThreeRight(value0, value1, value2, value3, value4, value5);
-                        };
-                    };
-                };
-            };
-        };
-    };
-    return ThreeRight;
-})();
-var KickUp = (function () {
-    function KickUp(value0, value1, value2, value3) {
-        this.value0 = value0;
-        this.value1 = value1;
-        this.value2 = value2;
-        this.value3 = value3;
-    };
-    KickUp.create = function (value0) {
-        return function (value1) {
-            return function (value2) {
-                return function (value3) {
-                    return new KickUp(value0, value1, value2, value3);
-                };
-            };
-        };
-    };
-    return KickUp;
-})();
-var values = function (v) {
-    if (v instanceof Leaf) {
-        return Data_List_Types.Nil.value;
-    };
-    if (v instanceof Two) {
-        return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(values(v.value3)));
-    };
-    if (v instanceof Three) {
-        return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value5))(values(v.value6)))));
-    };
-    throw new Error("Failed pattern match at Data.Map line 425, column 1 - line 425, column 18: " + [ v.constructor.name ]);
-};
-var size = function ($673) {
-    return Data_List.length(values($673));
-};
-var singleton = function (k) {
-    return function (v) {
-        return new Two(Leaf.value, k, v, Leaf.value);
-    };
-};
-var toAscUnfoldable = function (dictUnfoldable) {
-    return function (m) {
-        var go = function (__copy_v) {
-            var v = __copy_v;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_v;
-            function __tco_loop(v) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return Data_Maybe.Nothing.value;
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    if (v.value0 instanceof Leaf) {
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    if (v.value0 instanceof Two && (v.value0.value0 instanceof Leaf && v.value0.value3 instanceof Leaf)) {
-                        __tco_done = true;
-                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), v.value1));
-                    };
-                    if (v.value0 instanceof Two && v.value0.value0 instanceof Leaf) {
-                        __tco_done = true;
-                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), new Data_List_Types.Cons(v.value0.value3, v.value1)));
-                    };
-                    if (v.value0 instanceof Two) {
-                        __tco_v = new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(singleton(v.value0.value1)(v.value0.value2), new Data_List_Types.Cons(v.value0.value3, v.value1)));
-                        return;
-                    };
-                    if (v.value0 instanceof Three) {
-                        __tco_v = new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(singleton(v.value0.value1)(v.value0.value2), new Data_List_Types.Cons(v.value0.value3, new Data_List_Types.Cons(singleton(v.value0.value4)(v.value0.value5), new Data_List_Types.Cons(v.value0.value6, v.value1)))));
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.Map line 406, column 18 - line 415, column 71: " + [ v.value0.constructor.name ]);
-                };
-                throw new Error("Failed pattern match at Data.Map line 404, column 21 - line 415, column 71: " + [ v.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(v);
-                v = __tco_v;
-            };
-            return __tco_result;
-        };
-        return Data_Unfoldable.unfoldr(dictUnfoldable)(go)(new Data_List_Types.Cons(m, Data_List_Types.Nil.value));
-    };
-};
-var toAscArray = toAscUnfoldable(Data_Unfoldable.unfoldableArray);
-var toUnfoldable = function (dictUnfoldable) {
-    return function (m) {
-        var go = function (__copy_v) {
-            var v = __copy_v;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_v;
-            function __tco_loop(v) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return Data_Maybe.Nothing.value;
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    if (v.value0 instanceof Leaf) {
-                        __tco_v = v.value1;
-                        return;
-                    };
-                    if (v.value0 instanceof Two) {
-                        __tco_done = true;
-                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(v.value0.value3, v.value1))));
-                    };
-                    if (v.value0 instanceof Three) {
-                        __tco_done = true;
-                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), new Data_List_Types.Cons(singleton(v.value0.value4)(v.value0.value5), new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(v.value0.value3, new Data_List_Types.Cons(v.value0.value6, v.value1))))));
-                    };
-                    throw new Error("Failed pattern match at Data.Map line 395, column 18 - line 400, column 77: " + [ v.value0.constructor.name ]);
-                };
-                throw new Error("Failed pattern match at Data.Map line 393, column 18 - line 400, column 77: " + [ v.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(v);
-                v = __tco_v;
-            };
-            return __tco_result;
-        };
-        return Data_Unfoldable.unfoldr(dictUnfoldable)(go)(new Data_List_Types.Cons(m, Data_List_Types.Nil.value));
-    };
-};
-var showTree = function (dictShow) {
-    return function (dictShow1) {
-        return function (v) {
-            if (v instanceof Leaf) {
-                return "Leaf";
-            };
-            if (v instanceof Two) {
-                return "Two (" + (showTree(dictShow)(dictShow1)(v.value0) + (") (" + (Data_Show.show(dictShow)(v.value1) + (") (" + (Data_Show.show(dictShow1)(v.value2) + (") (" + (showTree(dictShow)(dictShow1)(v.value3) + ")")))))));
-            };
-            if (v instanceof Three) {
-                return "Three (" + (showTree(dictShow)(dictShow1)(v.value0) + (") (" + (Data_Show.show(dictShow)(v.value1) + (") (" + (Data_Show.show(dictShow1)(v.value2) + (") (" + (showTree(dictShow)(dictShow1)(v.value3) + (") (" + (Data_Show.show(dictShow)(v.value4) + (") (" + (Data_Show.show(dictShow1)(v.value5) + (") (" + (showTree(dictShow)(dictShow1)(v.value6) + ")")))))))))))));
-            };
-            throw new Error("Failed pattern match at Data.Map line 109, column 1 - line 110, column 1: " + [ v.constructor.name ]);
-        };
-    };
-};
-var showMap = function (dictShow) {
-    return function (dictShow1) {
-        return new Data_Show.Show(function (m) {
-            return "(fromFoldable " + (Data_Show.show(Data_Show.showArray(Data_Tuple.showTuple(dictShow)(dictShow1)))(toAscArray(m)) + ")");
-        });
-    };
-};
-var mapWithKey = function (v) {
-    return function (v1) {
-        if (v1 instanceof Leaf) {
-            return Leaf.value;
-        };
-        if (v1 instanceof Two) {
-            return new Two(mapWithKey(v)(v1.value0), v1.value1, v(v1.value1)(v1.value2), mapWithKey(v)(v1.value3));
-        };
-        if (v1 instanceof Three) {
-            return new Three(mapWithKey(v)(v1.value0), v1.value1, v(v1.value1)(v1.value2), mapWithKey(v)(v1.value3), v1.value4, v(v1.value4)(v1.value5), mapWithKey(v)(v1.value6));
-        };
-        throw new Error("Failed pattern match at Data.Map line 451, column 1 - line 451, column 25: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-};
-var lookupLE = function (dictOrd) {
-    return function (v) {
-        return function (v1) {
-            if (v1 instanceof Leaf) {
-                return Data_Maybe.Nothing.value;
-            };
-            if (v1 instanceof Two) {
-                var v2 = Data_Ord.compare(dictOrd)(v)(v1.value1);
-                if (v2 instanceof Data_Ordering.EQ) {
-                    return new Data_Maybe.Just({
-                        key: v1.value1, 
-                        value: v1.value2
-                    });
-                };
-                if (v2 instanceof Data_Ordering.GT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value1, 
-                        value: v1.value2
-                    })(lookupLE(dictOrd)(v)(v1.value3)));
-                };
-                if (v2 instanceof Data_Ordering.LT) {
-                    return lookupLE(dictOrd)(v)(v1.value0);
-                };
-                throw new Error("Failed pattern match at Data.Map line 176, column 37 - line 179, column 24: " + [ v2.constructor.name ]);
-            };
-            if (v1 instanceof Three) {
-                var v3 = Data_Ord.compare(dictOrd)(v)(v1.value4);
-                if (v3 instanceof Data_Ordering.EQ) {
-                    return new Data_Maybe.Just({
-                        key: v1.value4, 
-                        value: v1.value5
-                    });
-                };
-                if (v3 instanceof Data_Ordering.GT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value4, 
-                        value: v1.value5
-                    })(lookupLE(dictOrd)(v)(v1.value6)));
-                };
-                if (v3 instanceof Data_Ordering.LT) {
-                    return lookupLE(dictOrd)(v)(new Two(v1.value0, v1.value1, v1.value2, v1.value3));
-                };
-                throw new Error("Failed pattern match at Data.Map line 180, column 49 - line 183, column 40: " + [ v3.constructor.name ]);
-            };
-            throw new Error("Failed pattern match at Data.Map line 175, column 1 - line 175, column 26: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var lookupGE = function (dictOrd) {
-    return function (v) {
-        return function (v1) {
-            if (v1 instanceof Leaf) {
-                return Data_Maybe.Nothing.value;
-            };
-            if (v1 instanceof Two) {
-                var v2 = Data_Ord.compare(dictOrd)(v)(v1.value1);
-                if (v2 instanceof Data_Ordering.EQ) {
-                    return new Data_Maybe.Just({
-                        key: v1.value1, 
-                        value: v1.value2
-                    });
-                };
-                if (v2 instanceof Data_Ordering.LT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value1, 
-                        value: v1.value2
-                    })(lookupGE(dictOrd)(v)(v1.value0)));
-                };
-                if (v2 instanceof Data_Ordering.GT) {
-                    return lookupGE(dictOrd)(v)(v1.value3);
-                };
-                throw new Error("Failed pattern match at Data.Map line 200, column 37 - line 203, column 25: " + [ v2.constructor.name ]);
-            };
-            if (v1 instanceof Three) {
-                var v3 = Data_Ord.compare(dictOrd)(v)(v1.value1);
-                if (v3 instanceof Data_Ordering.EQ) {
-                    return new Data_Maybe.Just({
-                        key: v1.value1, 
-                        value: v1.value2
-                    });
-                };
-                if (v3 instanceof Data_Ordering.LT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value1, 
-                        value: v1.value2
-                    })(lookupGE(dictOrd)(v)(v1.value0)));
-                };
-                if (v3 instanceof Data_Ordering.GT) {
-                    return lookupGE(dictOrd)(v)(new Two(v1.value3, v1.value4, v1.value5, v1.value6));
-                };
-                throw new Error("Failed pattern match at Data.Map line 204, column 49 - line 207, column 41: " + [ v3.constructor.name ]);
-            };
-            throw new Error("Failed pattern match at Data.Map line 199, column 1 - line 199, column 26: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var lookup = function (dictOrd) {
-    return function (k) {
-        return function (tree) {
-            if (tree instanceof Leaf) {
-                return Data_Maybe.Nothing.value;
-            };
-            var comp = Data_Ord.compare(dictOrd);
-            var __unused = function (dictPartial1) {
-                return function ($dollar45) {
-                    return $dollar45;
-                };
-            };
-            return __unused()((function () {
-                if (tree instanceof Two) {
-                    var v1 = comp(k)(tree.value1);
-                    if (v1 instanceof Data_Ordering.EQ) {
-                        return new Data_Maybe.Just(tree.value2);
-                    };
-                    if (v1 instanceof Data_Ordering.LT) {
-                        return lookup(dictOrd)(k)(tree.value0);
-                    };
-                    return lookup(dictOrd)(k)(tree.value3);
-                };
-                if (tree instanceof Three) {
-                    var v = comp(k)(tree.value1);
-                    if (v instanceof Data_Ordering.EQ) {
-                        return new Data_Maybe.Just(tree.value2);
-                    };
-                    var v3 = comp(k)(tree.value4);
-                    if (v3 instanceof Data_Ordering.EQ) {
-                        return new Data_Maybe.Just(tree.value5);
-                    };
-                    if (v instanceof Data_Ordering.LT) {
-                        return lookup(dictOrd)(k)(tree.value0);
-                    };
-                    if (v3 instanceof Data_Ordering.GT) {
-                        return lookup(dictOrd)(k)(tree.value6);
-                    };
-                    return lookup(dictOrd)(k)(tree.value3);
-                };
-                throw new Error("Failed pattern match at Data.Map line 156, column 10 - line 170, column 39: " + [ tree.constructor.name ]);
-            })());
-        };
-    };
-};
-var member = function (dictOrd) {
-    return function (k) {
-        return function (m) {
-            return Data_Maybe.isJust(lookup(dictOrd)(k)(m));
-        };
-    };
-};
-var keys = function (v) {
-    if (v instanceof Leaf) {
-        return Data_List_Types.Nil.value;
-    };
-    if (v instanceof Two) {
-        return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(keys(v.value3)));
-    };
-    if (v instanceof Three) {
-        return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value4))(keys(v.value6)))));
-    };
-    throw new Error("Failed pattern match at Data.Map line 419, column 1 - line 419, column 16: " + [ v.constructor.name ]);
-};
-var isEmpty = function (v) {
-    if (v instanceof Leaf) {
-        return true;
-    };
-    return false;
-};
-var functorMap = new Data_Functor.Functor(function (v) {
-    return function (v1) {
-        if (v1 instanceof Leaf) {
-            return Leaf.value;
-        };
-        if (v1 instanceof Two) {
-            return new Two(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3));
-        };
-        if (v1 instanceof Three) {
-            return new Three(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3), v1.value4, v(v1.value5), Data_Functor.map(functorMap)(v)(v1.value6));
-        };
-        throw new Error("Failed pattern match at Data.Map line 81, column 3 - line 81, column 20: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var fromZipper = function (__copy_dictOrd) {
-    return function (__copy_v) {
-        return function (__copy_tree) {
-            var dictOrd = __copy_dictOrd;
-            var v = __copy_v;
-            var tree = __copy_tree;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_dictOrd;
-            var __tco_v;
-            var __tco_tree;
-            function __tco_loop(dictOrd, v, tree) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return tree;
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    if (v.value0 instanceof TwoLeft) {
-                        __tco_dictOrd = dictOrd;
-                        __tco_v = v.value1;
-                        __tco_tree = new Two(tree, v.value0.value0, v.value0.value1, v.value0.value2);
-                        return;
-                    };
-                    if (v.value0 instanceof TwoRight) {
-                        __tco_dictOrd = dictOrd;
-                        __tco_v = v.value1;
-                        __tco_tree = new Two(v.value0.value0, v.value0.value1, v.value0.value2, tree);
-                        return;
-                    };
-                    if (v.value0 instanceof ThreeLeft) {
-                        __tco_dictOrd = dictOrd;
-                        __tco_v = v.value1;
-                        __tco_tree = new Three(tree, v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5);
-                        return;
-                    };
-                    if (v.value0 instanceof ThreeMiddle) {
-                        __tco_dictOrd = dictOrd;
-                        __tco_v = v.value1;
-                        __tco_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, tree, v.value0.value3, v.value0.value4, v.value0.value5);
-                        return;
-                    };
-                    if (v.value0 instanceof ThreeRight) {
-                        __tco_dictOrd = dictOrd;
-                        __tco_v = v.value1;
-                        __tco_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5, tree);
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.Map line 247, column 3 - line 252, column 88: " + [ v.value0.constructor.name ]);
-                };
-                throw new Error("Failed pattern match at Data.Map line 245, column 1 - line 245, column 27: " + [ v.constructor.name, tree.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(dictOrd, v, tree);
-                dictOrd = __tco_dictOrd;
-                v = __tco_v;
-                tree = __tco_tree;
-            };
-            return __tco_result;
-        };
-    };
-};
-var insert = function (dictOrd) {
-    var up = function (__copy_v) {
-        return function (__copy_v1) {
-            var v = __copy_v;
-            var v1 = __copy_v1;
-            var __tco_done = false;
-            var __tco_result;
-            var __tco_v;
-            var __tco_v1;
-            function __tco_loop(v, v1) {
-                if (v instanceof Data_List_Types.Nil) {
-                    __tco_done = true;
-                    return new Two(v1.value0, v1.value1, v1.value2, v1.value3);
-                };
-                if (v instanceof Data_List_Types.Cons) {
-                    if (v.value0 instanceof TwoLeft) {
-                        __tco_done = true;
-                        return fromZipper(dictOrd)(v.value1)(new Three(v1.value0, v1.value1, v1.value2, v1.value3, v.value0.value0, v.value0.value1, v.value0.value2));
-                    };
-                    if (v.value0 instanceof TwoRight) {
-                        __tco_done = true;
-                        return fromZipper(dictOrd)(v.value1)(new Three(v.value0.value0, v.value0.value1, v.value0.value2, v1.value0, v1.value1, v1.value2, v1.value3));
-                    };
-                    if (v.value0 instanceof ThreeLeft) {
-                        __tco_v = v.value1;
-                        __tco_v1 = new KickUp(new Two(v1.value0, v1.value1, v1.value2, v1.value3), v.value0.value0, v.value0.value1, new Two(v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5));
-                        return;
-                    };
-                    if (v.value0 instanceof ThreeMiddle) {
-                        __tco_v = v.value1;
-                        __tco_v1 = new KickUp(new Two(v.value0.value0, v.value0.value1, v.value0.value2, v1.value0), v1.value1, v1.value2, new Two(v1.value3, v.value0.value3, v.value0.value4, v.value0.value5));
-                        return;
-                    };
-                    if (v.value0 instanceof ThreeRight) {
-                        __tco_v = v.value1;
-                        __tco_v1 = new KickUp(new Two(v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3), v.value0.value4, v.value0.value5, new Two(v1.value0, v1.value1, v1.value2, v1.value3));
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.Map line 283, column 5 - line 288, column 104: " + [ v.value0.constructor.name, v1.constructor.name ]);
-                };
-                throw new Error("Failed pattern match at Data.Map line 281, column 3 - line 281, column 54: " + [ v.constructor.name, v1.constructor.name ]);
-            };
-            while (!__tco_done) {
-                __tco_result = __tco_loop(v, v1);
-                v = __tco_v;
-                v1 = __tco_v1;
-            };
-            return __tco_result;
-        };
-    };
-    var comp = Data_Ord.compare(dictOrd);
-    var down = function (__copy_ctx) {
-        return function (__copy_k) {
-            return function (__copy_v) {
-                return function (__copy_v1) {
-                    var ctx = __copy_ctx;
-                    var k = __copy_k;
-                    var v = __copy_v;
-                    var v1 = __copy_v1;
-                    var __tco_done = false;
-                    var __tco_result;
-                    var __tco_ctx;
-                    var __tco_k;
-                    var __tco_v;
-                    var __tco_v1;
-                    function __tco_loop(ctx, k, v, v1) {
-                        if (v1 instanceof Leaf) {
-                            __tco_done = true;
-                            return up(ctx)(new KickUp(Leaf.value, k, v, Leaf.value));
-                        };
-                        if (v1 instanceof Two) {
-                            var v3 = comp(k)(v1.value1);
-                            if (v3 instanceof Data_Ordering.EQ) {
-                                __tco_done = true;
-                                return fromZipper(dictOrd)(ctx)(new Two(v1.value0, k, v, v1.value3));
-                            };
-                            if (v3 instanceof Data_Ordering.LT) {
-                                __tco_ctx = new Data_List_Types.Cons(new TwoLeft(v1.value1, v1.value2, v1.value3), ctx);
-                                __tco_k = k;
-                                __tco_v = v;
-                                __tco_v1 = v1.value0;
-                                return;
-                            };
-                            __tco_ctx = new Data_List_Types.Cons(new TwoRight(v1.value0, v1.value1, v1.value2), ctx);
-                            __tco_k = k;
-                            __tco_v = v;
-                            __tco_v1 = v1.value3;
-                            return;
-                        };
-                        if (v1 instanceof Three) {
-                            var v3 = comp(k)(v1.value1);
-                            if (v3 instanceof Data_Ordering.EQ) {
-                                __tco_done = true;
-                                return fromZipper(dictOrd)(ctx)(new Three(v1.value0, k, v, v1.value3, v1.value4, v1.value5, v1.value6));
-                            };
-                            var v4 = comp(k)(v1.value4);
-                            if (v4 instanceof Data_Ordering.EQ) {
-                                __tco_done = true;
-                                return fromZipper(dictOrd)(ctx)(new Three(v1.value0, v1.value1, v1.value2, v1.value3, k, v, v1.value6));
-                            };
-                            if (v3 instanceof Data_Ordering.LT) {
-                                __tco_ctx = new Data_List_Types.Cons(new ThreeLeft(v1.value1, v1.value2, v1.value3, v1.value4, v1.value5, v1.value6), ctx);
-                                __tco_k = k;
-                                __tco_v = v;
-                                __tco_v1 = v1.value0;
-                                return;
-                            };
-                            if (v3 instanceof Data_Ordering.GT && v4 instanceof Data_Ordering.LT) {
-                                __tco_ctx = new Data_List_Types.Cons(new ThreeMiddle(v1.value0, v1.value1, v1.value2, v1.value4, v1.value5, v1.value6), ctx);
-                                __tco_k = k;
-                                __tco_v = v;
-                                __tco_v1 = v1.value3;
-                                return;
-                            };
-                            __tco_ctx = new Data_List_Types.Cons(new ThreeRight(v1.value0, v1.value1, v1.value2, v1.value3, v1.value4, v1.value5), ctx);
-                            __tco_k = k;
-                            __tco_v = v;
-                            __tco_v1 = v1.value6;
-                            return;
-                        };
-                        throw new Error("Failed pattern match at Data.Map line 264, column 3 - line 264, column 52: " + [ ctx.constructor.name, k.constructor.name, v.constructor.name, v1.constructor.name ]);
-                    };
-                    while (!__tco_done) {
-                        __tco_result = __tco_loop(ctx, k, v, v1);
-                        ctx = __tco_ctx;
-                        k = __tco_k;
-                        v = __tco_v;
-                        v1 = __tco_v1;
-                    };
-                    return __tco_result;
-                };
-            };
-        };
-    };
-    return down(Data_List_Types.Nil.value);
-};
-var pop = function (dictOrd) {
-    var up = function (ctxs) {
-        return function (tree) {
-            if (ctxs instanceof Data_List_Types.Nil) {
-                return tree;
-            };
-            if (ctxs instanceof Data_List_Types.Cons) {
-                var __unused = function (dictPartial1) {
-                    return function ($dollar53) {
-                        return $dollar53;
-                    };
-                };
-                return __unused()((function () {
-                    if (ctxs.value0 instanceof TwoLeft && (ctxs.value0.value2 instanceof Leaf && tree instanceof Leaf)) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value));
-                    };
-                    if (ctxs.value0 instanceof TwoRight && (ctxs.value0.value0 instanceof Leaf && tree instanceof Leaf)) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value));
-                    };
-                    if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Two) {
-                        return up(ctxs.value1)(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3));
-                    };
-                    if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Two) {
-                        return up(ctxs.value1)(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree));
-                    };
-                    if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Three) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6)));
-                    };
-                    if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Three) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree)));
-                    };
-                    if (ctxs.value0 instanceof ThreeLeft && (ctxs.value0.value2 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
-                    };
-                    if (ctxs.value0 instanceof ThreeMiddle && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
-                    };
-                    if (ctxs.value0 instanceof ThreeRight && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value3 instanceof Leaf && tree instanceof Leaf))) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value4, ctxs.value0.value5, Leaf.value));
-                    };
-                    if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Two) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                    };
-                    if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Two) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                    };
-                    if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Two) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0, ctxs.value0.value5.value1, ctxs.value0.value5.value2, ctxs.value0.value5.value3)));
-                    };
-                    if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Two) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3, ctxs.value0.value4, ctxs.value0.value5, tree)));
-                    };
-                    if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Three) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                    };
-                    if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Three) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                    };
-                    if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Three) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0), ctxs.value0.value5.value1, ctxs.value0.value5.value2, new Two(ctxs.value0.value5.value3, ctxs.value0.value5.value4, ctxs.value0.value5.value5, ctxs.value0.value5.value6)));
-                    };
-                    if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Three) {
-                        return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3), ctxs.value0.value3.value4, ctxs.value0.value3.value5, new Two(ctxs.value0.value3.value6, ctxs.value0.value4, ctxs.value0.value5, tree)));
-                    };
-                    throw new Error("Failed pattern match at Data.Map line 333, column 9 - line 350, column 136: " + [ ctxs.value0.constructor.name, tree.constructor.name ]);
-                })());
-            };
-            throw new Error("Failed pattern match at Data.Map line 330, column 5 - line 350, column 136: " + [ ctxs.constructor.name ]);
-        };
-    };
-    var removeMaxNode = function (ctx) {
-        return function (m) {
-            var __unused = function (dictPartial1) {
-                return function ($dollar55) {
-                    return $dollar55;
-                };
-            };
-            return __unused()((function () {
-                if (m instanceof Two && (m.value0 instanceof Leaf && m.value3 instanceof Leaf)) {
-                    return up(ctx)(Leaf.value);
-                };
-                if (m instanceof Two) {
-                    return removeMaxNode(new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx))(m.value3);
-                };
-                if (m instanceof Three && (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf))) {
-                    return up(new Data_List_Types.Cons(new TwoRight(Leaf.value, m.value1, m.value2), ctx))(Leaf.value);
-                };
-                if (m instanceof Three) {
-                    return removeMaxNode(new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx))(m.value6);
-                };
-                throw new Error("Failed pattern match at Data.Map line 362, column 5 - line 366, column 107: " + [ m.constructor.name ]);
-            })());
-        };
-    };
-    var maxNode = function (m) {
-        var __unused = function (dictPartial1) {
-            return function ($dollar57) {
-                return $dollar57;
-            };
-        };
-        return __unused()((function () {
-            if (m instanceof Two && m.value3 instanceof Leaf) {
-                return {
-                    key: m.value1, 
-                    value: m.value2
-                };
-            };
-            if (m instanceof Two) {
-                return maxNode(m.value3);
-            };
-            if (m instanceof Three && m.value6 instanceof Leaf) {
-                return {
-                    key: m.value4, 
-                    value: m.value5
-                };
-            };
-            if (m instanceof Three) {
-                return maxNode(m.value6);
-            };
-            throw new Error("Failed pattern match at Data.Map line 353, column 33 - line 357, column 45: " + [ m.constructor.name ]);
-        })());
-    };
-    var comp = Data_Ord.compare(dictOrd);
-    var down = function (__copy_ctx) {
-        return function (__copy_k) {
-            return function (__copy_m) {
-                var ctx = __copy_ctx;
-                var k = __copy_k;
-                var m = __copy_m;
-                var __tco_done = false;
-                var __tco_result;
-                var __tco_ctx;
-                var __tco_k;
-                var __tco_m;
-                function __tco_loop(ctx, k, m) {
-                    if (m instanceof Leaf) {
-                        __tco_done = true;
-                        return Data_Maybe.Nothing.value;
-                    };
-                    if (m instanceof Two) {
-                        var v = comp(k)(m.value1);
-                        if (m.value3 instanceof Leaf && v instanceof Data_Ordering.EQ) {
-                            __tco_done = true;
-                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, up(ctx)(Leaf.value)));
-                        };
-                        if (v instanceof Data_Ordering.EQ) {
-                            var max = maxNode(m.value0);
-                            __tco_done = true;
-                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new TwoLeft(max.key, max.value, m.value3), ctx))(m.value0)));
-                        };
-                        if (v instanceof Data_Ordering.LT) {
-                            __tco_ctx = new Data_List_Types.Cons(new TwoLeft(m.value1, m.value2, m.value3), ctx);
-                            __tco_k = k;
-                            __tco_m = m.value0;
-                            return;
-                        };
-                        __tco_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);
-                        __tco_k = k;
-                        __tco_m = m.value3;
-                        return;
-                    };
-                    if (m instanceof Three) {
-                        var leaves = (function () {
-                            if (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf)) {
-                                return true;
-                            };
-                            return false;
-                        })();
-                        var v = comp(k)(m.value4);
-                        var v3 = comp(k)(m.value1);
-                        if (leaves && v3 instanceof Data_Ordering.EQ) {
-                            __tco_done = true;
-                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value4, m.value5, Leaf.value))));
-                        };
-                        if (leaves && v instanceof Data_Ordering.EQ) {
-                            __tco_done = true;
-                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value1, m.value2, Leaf.value))));
-                        };
-                        if (v3 instanceof Data_Ordering.EQ) {
-                            var max = maxNode(m.value0);
-                            __tco_done = true;
-                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new ThreeLeft(max.key, max.value, m.value3, m.value4, m.value5, m.value6), ctx))(m.value0)));
-                        };
-                        if (v instanceof Data_Ordering.EQ) {
-                            var max = maxNode(m.value3);
-                            __tco_done = true;
-                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, removeMaxNode(new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, max.key, max.value, m.value6), ctx))(m.value3)));
-                        };
-                        if (v3 instanceof Data_Ordering.LT) {
-                            __tco_ctx = new Data_List_Types.Cons(new ThreeLeft(m.value1, m.value2, m.value3, m.value4, m.value5, m.value6), ctx);
-                            __tco_k = k;
-                            __tco_m = m.value0;
-                            return;
-                        };
-                        if (v3 instanceof Data_Ordering.GT && v instanceof Data_Ordering.LT) {
-                            __tco_ctx = new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, m.value4, m.value5, m.value6), ctx);
-                            __tco_k = k;
-                            __tco_m = m.value3;
-                            return;
-                        };
-                        __tco_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);
-                        __tco_k = k;
-                        __tco_m = m.value6;
-                        return;
-                    };
-                    throw new Error("Failed pattern match at Data.Map line 303, column 36 - line 326, column 82: " + [ m.constructor.name ]);
-                };
-                while (!__tco_done) {
-                    __tco_result = __tco_loop(ctx, k, m);
-                    ctx = __tco_ctx;
-                    k = __tco_k;
-                    m = __tco_m;
-                };
-                return __tco_result;
-            };
-        };
-    };
-    return down(Data_List_Types.Nil.value);
-};
-var foldableMap = new Data_Foldable.Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (m) {
-            return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(values(m));
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (m) {
-            return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(z)(values(m));
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (m) {
-            return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(z)(values(m));
-        };
-    };
-});
-var traversableMap = new Data_Traversable.Traversable(function () {
-    return foldableMap;
-}, function () {
-    return functorMap;
-}, function (dictApplicative) {
-    return Data_Traversable.traverse(traversableMap)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            if (v instanceof Leaf) {
-                return Control_Applicative.pure(dictApplicative)(Leaf.value);
-            };
-            if (v instanceof Two) {
-                return Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Two.create)(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value0)))(Control_Applicative.pure(dictApplicative)(v.value1)))(f(v.value2)))(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value3));
-            };
-            if (v instanceof Three) {
-                return Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Three.create)(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value0)))(Control_Applicative.pure(dictApplicative)(v.value1)))(f(v.value2)))(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value3)))(Control_Applicative.pure(dictApplicative)(v.value4)))(f(v.value5)))(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value6));
-            };
-            throw new Error("Failed pattern match at Data.Map line 91, column 3 - line 91, column 30: " + [ f.constructor.name, v.constructor.name ]);
-        };
-    };
-});
-var findMin = function (v) {
-    if (v instanceof Leaf) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (v instanceof Two) {
-        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-            key: v.value1, 
-            value: v.value2
-        })(findMin(v.value0)));
-    };
-    if (v instanceof Three) {
-        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-            key: v.value1, 
-            value: v.value2
-        })(findMin(v.value0)));
-    };
-    throw new Error("Failed pattern match at Data.Map line 229, column 1 - line 229, column 23: " + [ v.constructor.name ]);
-};
-var lookupGT = function (dictOrd) {
-    return function (v) {
-        return function (v1) {
-            if (v1 instanceof Leaf) {
-                return Data_Maybe.Nothing.value;
-            };
-            if (v1 instanceof Two) {
-                var v2 = Data_Ord.compare(dictOrd)(v)(v1.value1);
-                if (v2 instanceof Data_Ordering.EQ) {
-                    return findMin(v1.value3);
-                };
-                if (v2 instanceof Data_Ordering.LT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value1, 
-                        value: v1.value2
-                    })(lookupGT(dictOrd)(v)(v1.value0)));
-                };
-                if (v2 instanceof Data_Ordering.GT) {
-                    return lookupGT(dictOrd)(v)(v1.value3);
-                };
-                throw new Error("Failed pattern match at Data.Map line 212, column 37 - line 215, column 25: " + [ v2.constructor.name ]);
-            };
-            if (v1 instanceof Three) {
-                var v3 = Data_Ord.compare(dictOrd)(v)(v1.value1);
-                if (v3 instanceof Data_Ordering.EQ) {
-                    return findMin(new Two(v1.value3, v1.value4, v1.value5, v1.value6));
-                };
-                if (v3 instanceof Data_Ordering.LT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value1, 
-                        value: v1.value2
-                    })(lookupGT(dictOrd)(v)(v1.value0)));
-                };
-                if (v3 instanceof Data_Ordering.GT) {
-                    return lookupGT(dictOrd)(v)(new Two(v1.value3, v1.value4, v1.value5, v1.value6));
-                };
-                throw new Error("Failed pattern match at Data.Map line 216, column 49 - line 219, column 41: " + [ v3.constructor.name ]);
-            };
-            throw new Error("Failed pattern match at Data.Map line 211, column 1 - line 211, column 26: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var findMax = function (v) {
-    if (v instanceof Leaf) {
-        return Data_Maybe.Nothing.value;
-    };
-    if (v instanceof Two) {
-        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-            key: v.value1, 
-            value: v.value2
-        })(findMax(v.value3)));
-    };
-    if (v instanceof Three) {
-        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-            key: v.value4, 
-            value: v.value5
-        })(findMax(v.value6)));
-    };
-    throw new Error("Failed pattern match at Data.Map line 223, column 1 - line 223, column 23: " + [ v.constructor.name ]);
-};
-var lookupLT = function (dictOrd) {
-    return function (v) {
-        return function (v1) {
-            if (v1 instanceof Leaf) {
-                return Data_Maybe.Nothing.value;
-            };
-            if (v1 instanceof Two) {
-                var v2 = Data_Ord.compare(dictOrd)(v)(v1.value1);
-                if (v2 instanceof Data_Ordering.EQ) {
-                    return findMax(v1.value0);
-                };
-                if (v2 instanceof Data_Ordering.GT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value1, 
-                        value: v1.value2
-                    })(lookupLT(dictOrd)(v)(v1.value3)));
-                };
-                if (v2 instanceof Data_Ordering.LT) {
-                    return lookupLT(dictOrd)(v)(v1.value0);
-                };
-                throw new Error("Failed pattern match at Data.Map line 188, column 37 - line 191, column 24: " + [ v2.constructor.name ]);
-            };
-            if (v1 instanceof Three) {
-                var v3 = Data_Ord.compare(dictOrd)(v)(v1.value4);
-                if (v3 instanceof Data_Ordering.EQ) {
-                    return findMax(new Two(v1.value0, v1.value1, v1.value2, v1.value3));
-                };
-                if (v3 instanceof Data_Ordering.GT) {
-                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
-                        key: v1.value4, 
-                        value: v1.value5
-                    })(lookupLT(dictOrd)(v)(v1.value6)));
-                };
-                if (v3 instanceof Data_Ordering.LT) {
-                    return lookupLT(dictOrd)(v)(new Two(v1.value0, v1.value1, v1.value2, v1.value3));
-                };
-                throw new Error("Failed pattern match at Data.Map line 192, column 49 - line 195, column 40: " + [ v3.constructor.name ]);
-            };
-            throw new Error("Failed pattern match at Data.Map line 187, column 1 - line 187, column 26: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-};
-var eqMap = function (dictEq) {
-    return function (dictEq1) {
-        return new Data_Eq.Eq(function (m1) {
-            return function (m2) {
-                return Data_Eq.eq(Data_Eq.eqArray(Data_Tuple.eqTuple(dictEq)(dictEq1)))(toAscArray(m1))(toAscArray(m2));
-            };
-        });
-    };
-};
-var ordMap = function (dictOrd) {
-    return function (dictOrd1) {
-        return new Data_Ord.Ord(function () {
-            return eqMap(dictOrd.Eq0())(dictOrd1.Eq0());
-        }, function (m1) {
-            return function (m2) {
-                return Data_Ord.compare(Data_Ord.ordArray(Data_Tuple.ordTuple(dictOrd)(dictOrd1)))(toAscArray(m1))(toAscArray(m2));
-            };
-        });
-    };
-};
-var eq1Map = function (dictEq) {
-    return new Data_Eq.Eq1(function (dictEq1) {
-        return Data_Eq.eq(eqMap(dictEq)(dictEq1));
-    });
-};
-var ord1Map = function (dictOrd) {
-    return new Data_Ord.Ord1(function () {
-        return eq1Map(dictOrd.Eq0());
-    }, function (dictOrd1) {
-        return Data_Ord.compare(ordMap(dictOrd)(dictOrd1));
-    });
-};
-var empty = Leaf.value;
-var fromFoldable = function (dictOrd) {
-    return function (dictFoldable) {
-        return Data_Foldable.foldl(dictFoldable)(function (m) {
-            return function (v) {
-                return insert(dictOrd)(v.value0)(v.value1)(m);
-            };
-        })(empty);
-    };
-};
-var $$delete = function (dictOrd) {
-    return function (k) {
-        return function (m) {
-            return Data_Maybe.maybe(m)(Data_Tuple.snd)(pop(dictOrd)(k)(m));
-        };
-    };
-};
-var checkValid = function (tree) {
-    var allHeights = function (v) {
-        if (v instanceof Leaf) {
-            return Control_Applicative.pure(Data_List_Types.applicativeList)(0);
-        };
-        if (v instanceof Two) {
-            return Data_Functor.map(Data_List_Types.functorList)(function (n) {
-                return n + 1 | 0;
-            })(Data_Semigroup.append(Data_List_Types.semigroupList)(allHeights(v.value0))(allHeights(v.value3)));
-        };
-        if (v instanceof Three) {
-            return Data_Functor.map(Data_List_Types.functorList)(function (n) {
-                return n + 1 | 0;
-            })(Data_Semigroup.append(Data_List_Types.semigroupList)(allHeights(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(allHeights(v.value3))(allHeights(v.value6))));
-        };
-        throw new Error("Failed pattern match at Data.Map line 144, column 3 - line 144, column 30: " + [ v.constructor.name ]);
-    };
-    return Data_List.length(Data_List.nub(Data_Eq.eqInt)(allHeights(tree))) === 1;
-};
-var alter = function (dictOrd) {
-    return function (f) {
-        return function (k) {
-            return function (m) {
-                var v = f(lookup(dictOrd)(k)(m));
-                if (v instanceof Data_Maybe.Nothing) {
-                    return $$delete(dictOrd)(k)(m);
-                };
-                if (v instanceof Data_Maybe.Just) {
-                    return insert(dictOrd)(k)(v.value0)(m);
-                };
-                throw new Error("Failed pattern match at Data.Map line 371, column 15 - line 373, column 25: " + [ v.constructor.name ]);
-            };
-        };
-    };
-};
-var fromFoldableWith = function (dictOrd) {
-    return function (dictFoldable) {
-        return function (f) {
-            var combine = function (v) {
-                return function (v1) {
-                    if (v1 instanceof Data_Maybe.Just) {
-                        return Data_Maybe.Just.create(f(v)(v1.value0));
-                    };
-                    if (v1 instanceof Data_Maybe.Nothing) {
-                        return new Data_Maybe.Just(v);
-                    };
-                    throw new Error("Failed pattern match at Data.Map line 388, column 3 - line 388, column 38: " + [ v.constructor.name, v1.constructor.name ]);
-                };
-            };
-            return Data_Foldable.foldl(dictFoldable)(function (m) {
-                return function (v) {
-                    return alter(dictOrd)(combine(v.value1))(v.value0)(m);
-                };
-            })(empty);
-        };
-    };
-};
-var unionWith = function (dictOrd) {
-    return function (f) {
-        return function (m1) {
-            return function (m2) {
-                var go = function (m) {
-                    return function (v) {
-                        return alter(dictOrd)(function ($674) {
-                            return Data_Maybe.Just.create(Data_Maybe.maybe(v.value1)(f(v.value1))($674));
-                        })(v.value0)(m);
-                    };
-                };
-                return Data_Foldable.foldl(Data_List_Types.foldableList)(go)(m2)(toUnfoldable(Data_List_Types.unfoldableList)(m1));
-            };
-        };
-    };
-};
-var union = function (dictOrd) {
-    return unionWith(dictOrd)(Data_Function["const"]);
-};
-var semigroupMap = function (dictOrd) {
-    return new Data_Semigroup.Semigroup(union(dictOrd));
-};
-var monoidMap = function (dictOrd) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupMap(dictOrd);
-    }, empty);
-};
-var unions = function (dictOrd) {
-    return function (dictFoldable) {
-        return Data_Foldable.foldl(dictFoldable)(union(dictOrd))(empty);
-    };
-};
-var update = function (dictOrd) {
-    return function (f) {
-        return function (k) {
-            return function (m) {
-                return alter(dictOrd)(Data_Maybe.maybe(Data_Maybe.Nothing.value)(f))(k)(m);
-            };
-        };
-    };
-};
-module.exports = {
-    alter: alter, 
-    checkValid: checkValid, 
-    "delete": $$delete, 
-    empty: empty, 
-    findMax: findMax, 
-    findMin: findMin, 
-    fromFoldable: fromFoldable, 
-    fromFoldableWith: fromFoldableWith, 
-    insert: insert, 
-    isEmpty: isEmpty, 
-    keys: keys, 
-    lookup: lookup, 
-    lookupGE: lookupGE, 
-    lookupGT: lookupGT, 
-    lookupLE: lookupLE, 
-    lookupLT: lookupLT, 
-    mapWithKey: mapWithKey, 
-    member: member, 
-    pop: pop, 
-    showTree: showTree, 
-    singleton: singleton, 
-    size: size, 
-    toAscUnfoldable: toAscUnfoldable, 
-    toUnfoldable: toUnfoldable, 
-    union: union, 
-    unionWith: unionWith, 
-    unions: unions, 
-    update: update, 
-    values: values, 
-    eq1Map: eq1Map, 
-    eqMap: eqMap, 
-    ord1Map: ord1Map, 
-    ordMap: ordMap, 
-    showMap: showMap, 
-    semigroupMap: semigroupMap, 
-    monoidMap: monoidMap, 
-    functorMap: functorMap, 
-    foldableMap: foldableMap, 
-    traversableMap: traversableMap
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.List":194,"../Data.List.Types":193,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Partial.Unsafe":265,"../Prelude":268}],196:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var First = function (x) {
-    return x;
-};
-var showFirst = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "First (" + (Data_Show.show(Data_Maybe.showMaybe(dictShow))(v) + ")");
-    });
-};
-var semigroupFirst = new Data_Semigroup.Semigroup(function (v) {
-    return function (v1) {
-        if (v instanceof Data_Maybe.Just) {
-            return v;
-        };
-        return v1;
-    };
-});
-var ordFirst = function (dictOrd) {
-    return Data_Maybe.ordMaybe(dictOrd);
-};
-var ord1First = Data_Maybe.ord1Maybe;
-var newtypeFirst = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, First);
-var monoidFirst = new Data_Monoid.Monoid(function () {
-    return semigroupFirst;
-}, Data_Maybe.Nothing.value);
-var monadFirst = Data_Maybe.monadMaybe;
-var invariantFirst = Data_Maybe.invariantMaybe;
-var functorFirst = Data_Maybe.functorMaybe;
-var extendFirst = Data_Maybe.extendMaybe;
-var eqFirst = function (dictEq) {
-    return Data_Maybe.eqMaybe(dictEq);
-};
-var eq1First = Data_Maybe.eq1Maybe;
-var boundedFirst = function (dictBounded) {
-    return Data_Maybe.boundedMaybe(dictBounded);
-};
-var bindFirst = Data_Maybe.bindMaybe;
-var applyFirst = Data_Maybe.applyMaybe;
-var applicativeFirst = Data_Maybe.applicativeMaybe;
-module.exports = {
-    First: First, 
-    newtypeFirst: newtypeFirst, 
-    eqFirst: eqFirst, 
-    eq1First: eq1First, 
-    ordFirst: ordFirst, 
-    ord1First: ord1First, 
-    boundedFirst: boundedFirst, 
-    functorFirst: functorFirst, 
-    invariantFirst: invariantFirst, 
-    applyFirst: applyFirst, 
-    applicativeFirst: applicativeFirst, 
-    bindFirst: bindFirst, 
-    monadFirst: monadFirst, 
-    extendFirst: extendFirst, 
-    showFirst: showFirst, 
-    semigroupFirst: semigroupFirst, 
-    monoidFirst: monoidFirst
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],197:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Last = function (x) {
-    return x;
-};
-var showLast = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Last " + (Data_Show.show(Data_Maybe.showMaybe(dictShow))(v) + ")");
-    });
-};
-var semigroupLast = new Data_Semigroup.Semigroup(function (v) {
-    return function (v1) {
-        if (v1 instanceof Data_Maybe.Just) {
-            return v1;
-        };
-        if (v1 instanceof Data_Maybe.Nothing) {
-            return v;
-        };
-        throw new Error("Failed pattern match at Data.Maybe.Last line 54, column 3 - line 54, column 39: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var ordLast = function (dictOrd) {
-    return Data_Maybe.ordMaybe(dictOrd);
-};
-var ord1Last = Data_Maybe.ord1Maybe;
-var newtypeLast = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Last);
-var monoidLast = new Data_Monoid.Monoid(function () {
-    return semigroupLast;
-}, Data_Maybe.Nothing.value);
-var monadLast = Data_Maybe.monadMaybe;
-var invariantLast = Data_Maybe.invariantMaybe;
-var functorLast = Data_Maybe.functorMaybe;
-var extendLast = Data_Maybe.extendMaybe;
-var eqLast = function (dictEq) {
-    return Data_Maybe.eqMaybe(dictEq);
-};
-var eq1Last = Data_Maybe.eq1Maybe;
-var boundedLast = function (dictBounded) {
-    return Data_Maybe.boundedMaybe(dictBounded);
-};
-var bindLast = Data_Maybe.bindMaybe;
-var applyLast = Data_Maybe.applyMaybe;
-var applicativeLast = Data_Maybe.applicativeMaybe;
-module.exports = {
-    Last: Last, 
-    newtypeLast: newtypeLast, 
-    eqLast: eqLast, 
-    eq1Last: eq1Last, 
-    ordLast: ordLast, 
-    ord1Last: ord1Last, 
-    boundedLast: boundedLast, 
-    functorLast: functorLast, 
-    invariantLast: invariantLast, 
-    applyLast: applyLast, 
-    applicativeLast: applicativeLast, 
-    bindLast: bindLast, 
-    monadLast: monadLast, 
-    extendLast: extendLast, 
-    showLast: showLast, 
-    semigroupLast: semigroupLast, 
-    monoidLast: monoidLast
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],198:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Nothing = (function () {
-    function Nothing() {
-
-    };
-    Nothing.value = new Nothing();
-    return Nothing;
-})();
-var Just = (function () {
-    function Just(value0) {
-        this.value0 = value0;
-    };
-    Just.create = function (value0) {
-        return new Just(value0);
-    };
-    return Just;
-})();
-var showMaybe = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        if (v instanceof Just) {
-            return "(Just " + (Data_Show.show(dictShow)(v.value0) + ")");
-        };
-        if (v instanceof Nothing) {
-            return "Nothing";
-        };
-        throw new Error("Failed pattern match at Data.Maybe line 208, column 3 - line 209, column 3: " + [ v.constructor.name ]);
-    });
-};
-var semigroupMaybe = function (dictSemigroup) {
-    return new Data_Semigroup.Semigroup(function (v) {
-        return function (v1) {
-            if (v instanceof Nothing) {
-                return v1;
-            };
-            if (v1 instanceof Nothing) {
-                return v;
-            };
-            if (v instanceof Just && v1 instanceof Just) {
-                return new Just(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0));
-            };
-            throw new Error("Failed pattern match at Data.Maybe line 177, column 3 - line 177, column 23: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    });
-};
-var monoidMaybe = function (dictSemigroup) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupMaybe(dictSemigroup);
-    }, Nothing.value);
-};
-var maybe$prime = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v2 instanceof Nothing) {
-                return v(Data_Unit.unit);
-            };
-            if (v2 instanceof Just) {
-                return v1(v2.value0);
-            };
-            throw new Error("Failed pattern match at Data.Maybe line 233, column 1 - line 233, column 28: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-        };
-    };
-};
-var maybe = function (v) {
-    return function (v1) {
-        return function (v2) {
-            if (v2 instanceof Nothing) {
-                return v;
-            };
-            if (v2 instanceof Just) {
-                return v1(v2.value0);
-            };
-            throw new Error("Failed pattern match at Data.Maybe line 220, column 1 - line 220, column 22: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-        };
-    };
-};
-var isNothing = maybe(true)(Data_Function["const"](false));
-var isJust = maybe(false)(Data_Function["const"](true));
-var functorMaybe = new Data_Functor.Functor(function (v) {
-    return function (v1) {
-        if (v1 instanceof Just) {
-            return new Just(v(v1.value0));
-        };
-        return Nothing.value;
-    };
-});
-var invariantMaybe = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorMaybe));
-var fromMaybe$prime = function (a) {
-    return maybe$prime(a)(Control_Category.id(Control_Category.categoryFn));
-};
-var fromMaybe = function (a) {
-    return maybe(a)(Control_Category.id(Control_Category.categoryFn));
-};
-var fromJust = function (dictPartial) {
-    return function (v) {
-        var __unused = function (dictPartial1) {
-            return function ($dollar34) {
-                return $dollar34;
-            };
-        };
-        return __unused(dictPartial)((function () {
-            if (v instanceof Just) {
-                return v.value0;
-            };
-            throw new Error("Failed pattern match at Data.Maybe line 271, column 1 - line 271, column 21: " + [ v.constructor.name ]);
-        })());
-    };
-};
-var extendMaybe = new Control_Extend.Extend(function () {
-    return functorMaybe;
-}, function (v) {
-    return function (v1) {
-        if (v1 instanceof Nothing) {
-            return Nothing.value;
-        };
-        return new Just(v(v1));
-    };
-});
-var eqMaybe = function (dictEq) {
-    return new Data_Eq.Eq(function (x) {
-        return function (y) {
-            if (x instanceof Nothing && y instanceof Nothing) {
-                return true;
-            };
-            if (x instanceof Just && y instanceof Just) {
-                return Data_Eq.eq(dictEq)(x.value0)(y.value0);
-            };
-            return false;
-        };
-    });
-};
-var ordMaybe = function (dictOrd) {
-    return new Data_Ord.Ord(function () {
-        return eqMaybe(dictOrd.Eq0());
-    }, function (x) {
-        return function (y) {
-            if (x instanceof Nothing && y instanceof Nothing) {
-                return Data_Ordering.EQ.value;
-            };
-            if (x instanceof Nothing) {
-                return Data_Ordering.LT.value;
-            };
-            if (y instanceof Nothing) {
-                return Data_Ordering.GT.value;
-            };
-            if (x instanceof Just && y instanceof Just) {
-                return Data_Ord.compare(dictOrd)(x.value0)(y.value0);
-            };
-            throw new Error("Failed pattern match at Data.Maybe line 196, column 1 - line 196, column 51: " + [ x.constructor.name, y.constructor.name ]);
-        };
-    });
-};
-var eq1Maybe = new Data_Eq.Eq1(function (dictEq) {
-    return Data_Eq.eq(eqMaybe(dictEq));
-});
-var ord1Maybe = new Data_Ord.Ord1(function () {
-    return eq1Maybe;
-}, function (dictOrd) {
-    return Data_Ord.compare(ordMaybe(dictOrd));
-});
-var boundedMaybe = function (dictBounded) {
-    return new Data_Bounded.Bounded(function () {
-        return ordMaybe(dictBounded.Ord0());
-    }, Nothing.value, new Just(Data_Bounded.top(dictBounded)));
-};
-var applyMaybe = new Control_Apply.Apply(function () {
-    return functorMaybe;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Just) {
-            return Data_Functor.map(functorMaybe)(v.value0)(v1);
-        };
-        if (v instanceof Nothing) {
-            return Nothing.value;
-        };
-        throw new Error("Failed pattern match at Data.Maybe line 69, column 3 - line 69, column 31: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var bindMaybe = new Control_Bind.Bind(function () {
-    return applyMaybe;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Just) {
-            return v1(v.value0);
-        };
-        if (v instanceof Nothing) {
-            return Nothing.value;
-        };
-        throw new Error("Failed pattern match at Data.Maybe line 128, column 3 - line 128, column 24: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var applicativeMaybe = new Control_Applicative.Applicative(function () {
-    return applyMaybe;
-}, Just.create);
-var monadMaybe = new Control_Monad.Monad(function () {
-    return applicativeMaybe;
-}, function () {
-    return bindMaybe;
-});
-var altMaybe = new Control_Alt.Alt(function () {
-    return functorMaybe;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Nothing) {
-            return v1;
-        };
-        return v;
-    };
-});
-var plusMaybe = new Control_Plus.Plus(function () {
-    return altMaybe;
-}, Nothing.value);
-var alternativeMaybe = new Control_Alternative.Alternative(function () {
-    return applicativeMaybe;
-}, function () {
-    return plusMaybe;
-});
-var monadZeroMaybe = new Control_MonadZero.MonadZero(function () {
-    return alternativeMaybe;
-}, function () {
-    return monadMaybe;
-});
-module.exports = {
-    Nothing: Nothing, 
-    Just: Just, 
-    fromJust: fromJust, 
-    fromMaybe: fromMaybe, 
-    "fromMaybe'": fromMaybe$prime, 
-    isJust: isJust, 
-    isNothing: isNothing, 
-    maybe: maybe, 
-    "maybe'": maybe$prime, 
-    functorMaybe: functorMaybe, 
-    applyMaybe: applyMaybe, 
-    applicativeMaybe: applicativeMaybe, 
-    altMaybe: altMaybe, 
-    plusMaybe: plusMaybe, 
-    alternativeMaybe: alternativeMaybe, 
-    bindMaybe: bindMaybe, 
-    monadMaybe: monadMaybe, 
-    monadZeroMaybe: monadZeroMaybe, 
-    extendMaybe: extendMaybe, 
-    invariantMaybe: invariantMaybe, 
-    semigroupMaybe: semigroupMaybe, 
-    monoidMaybe: monoidMaybe, 
-    eqMaybe: eqMaybe, 
-    eq1Maybe: eq1Maybe, 
-    ordMaybe: ordMaybe, 
-    ord1Maybe: ord1Maybe, 
-    boundedMaybe: boundedMaybe, 
-    showMaybe: showMaybe
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Extend":49,"../Control.Monad":86,"../Control.MonadZero":88,"../Control.Plus":91,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Monoid":207,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Unit":249,"../Prelude":268}],199:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_MediaType = require("../Data.MediaType");
-var textXML = "text/xml";
-var textPlain = "text/plain";
-var textHTML = "text/html";
-var textCSV = "text/csv";
-var multipartFormData = "multipart/form-data";
-var imagePNG = "image/png";
-var imageJPEG = "image/jpeg";
-var imageGIF = "image/gif";
-var applicationXML = "application/xml";
-var applicationOctetStream = "application/octet-stream";
-var applicationJavascript = "application/javascript";
-var applicationJSON = "application/json";
-var applicationFormURLEncoded = "application/x-www-form-urlencoded";
-module.exports = {
-    applicationFormURLEncoded: applicationFormURLEncoded, 
-    applicationJSON: applicationJSON, 
-    applicationJavascript: applicationJavascript, 
-    applicationOctetStream: applicationOctetStream, 
-    applicationXML: applicationXML, 
-    imageGIF: imageGIF, 
-    imageJPEG: imageJPEG, 
-    imagePNG: imagePNG, 
-    multipartFormData: multipartFormData, 
-    textCSV: textCSV, 
-    textHTML: textHTML, 
-    textPlain: textPlain, 
-    textXML: textXML
-};
-
-},{"../Data.MediaType":200}],200:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Apply = require("../Control.Apply");
-var Data_Eq = require("../Data.Eq");
-var Data_Generic = require("../Data.Generic");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var MediaType = function (x) {
-    return x;
-};
-var showMediaType = new Data_Show.Show(function (v) {
-    return "(MediaType " + (Data_Show.show(Data_Show.showString)(v) + ")");
-});
-var newtypeMediaType = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, MediaType);
-var genericMediaType = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.MediaType.MediaType" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(MediaType))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.MediaType.MediaType", [ {
-        sigConstructor: "Data.MediaType.MediaType", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.MediaType.MediaType", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericString)(v);
-    } ]);
-});
-var eqMediaType = new Data_Eq.Eq(function (x) {
-    return function (y) {
-        return x === y;
-    };
-});
-var ordMediaType = new Data_Ord.Ord(function () {
-    return eqMediaType;
-}, function (x) {
-    return function (y) {
-        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
-    };
-});
-module.exports = {
-    MediaType: MediaType, 
-    newtypeMediaType: newtypeMediaType, 
-    eqMediaType: eqMediaType, 
-    ordMediaType: ordMediaType, 
-    genericMediaType: genericMediaType, 
-    showMediaType: showMediaType
-};
-
-},{"../Control.Apply":42,"../Data.Eq":138,"../Data.Generic":157,"../Data.Maybe":198,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Unit":249,"../Prelude":268}],201:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Additive = function (x) {
-    return x;
-};
-var showAdditive = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Additive " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var semigroupAdditive = function (dictSemiring) {
-    return new Data_Semigroup.Semigroup(function (v) {
-        return function (v1) {
-            return Data_Semiring.add(dictSemiring)(v)(v1);
-        };
-    });
-};
-var ordAdditive = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeAdditive = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Additive);
-var monoidAdditive = function (dictSemiring) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupAdditive(dictSemiring);
-    }, Data_Semiring.zero(dictSemiring));
-};
-var invariantAdditive = new Data_Functor_Invariant.Invariant(function (f) {
-    return function (v) {
-        return function (v1) {
-            return f(v1);
-        };
-    };
-});
-var functorAdditive = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return f(v);
-    };
-});
-var extendAdditive = new Control_Extend.Extend(function () {
-    return functorAdditive;
-}, function (f) {
-    return function (x) {
-        return f(x);
-    };
-});
-var eqAdditive = function (dictEq) {
-    return dictEq;
-};
-var comonadAdditive = new Control_Comonad.Comonad(function () {
-    return extendAdditive;
-}, Data_Newtype.unwrap(newtypeAdditive));
-var boundedAdditive = function (dictBounded) {
-    return dictBounded;
-};
-var applyAdditive = new Control_Apply.Apply(function () {
-    return functorAdditive;
-}, function (v) {
-    return function (v1) {
-        return v(v1);
-    };
-});
-var bindAdditive = new Control_Bind.Bind(function () {
-    return applyAdditive;
-}, function (v) {
-    return function (f) {
-        return f(v);
-    };
-});
-var applicativeAdditive = new Control_Applicative.Applicative(function () {
-    return applyAdditive;
-}, Additive);
-var monadAdditive = new Control_Monad.Monad(function () {
-    return applicativeAdditive;
-}, function () {
-    return bindAdditive;
-});
-module.exports = {
-    Additive: Additive, 
-    newtypeAdditive: newtypeAdditive, 
-    eqAdditive: eqAdditive, 
-    ordAdditive: ordAdditive, 
-    boundedAdditive: boundedAdditive, 
-    functorAdditive: functorAdditive, 
-    invariantAdditive: invariantAdditive, 
-    applyAdditive: applyAdditive, 
-    applicativeAdditive: applicativeAdditive, 
-    bindAdditive: bindAdditive, 
-    monadAdditive: monadAdditive, 
-    extendAdditive: extendAdditive, 
-    comonadAdditive: comonadAdditive, 
-    showAdditive: showAdditive, 
-    semigroupAdditive: semigroupAdditive, 
-    monoidAdditive: monoidAdditive
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Prelude":268}],202:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Conj = function (x) {
-    return x;
-};
-var showConj = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Conj " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var semiringConj = function (dictHeytingAlgebra) {
-    return new Data_Semiring.Semiring(function (v) {
-        return function (v1) {
-            return Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v)(v1);
-        };
-    }, function (v) {
-        return function (v1) {
-            return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
-        };
-    }, Data_HeytingAlgebra.ff(dictHeytingAlgebra), Data_HeytingAlgebra.tt(dictHeytingAlgebra));
-};
-var semigroupConj = function (dictHeytingAlgebra) {
-    return new Data_Semigroup.Semigroup(function (v) {
-        return function (v1) {
-            return Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v)(v1);
-        };
-    });
-};
-var ordConj = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeConj = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Conj);
-var monoidConj = function (dictHeytingAlgebra) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupConj(dictHeytingAlgebra);
-    }, Data_HeytingAlgebra.tt(dictHeytingAlgebra));
-};
-var invariantConj = new Data_Functor_Invariant.Invariant(function (f) {
-    return function (v) {
-        return function (v1) {
-            return f(v1);
-        };
-    };
-});
-var functorConj = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return f(v);
-    };
-});
-var extendConj = new Control_Extend.Extend(function () {
-    return functorConj;
-}, function (f) {
-    return function (x) {
-        return f(x);
-    };
-});
-var eqConj = function (dictEq) {
-    return dictEq;
-};
-var comonadConj = new Control_Comonad.Comonad(function () {
-    return extendConj;
-}, Data_Newtype.unwrap(newtypeConj));
-var boundedConj = function (dictBounded) {
-    return dictBounded;
-};
-var applyConj = new Control_Apply.Apply(function () {
-    return functorConj;
-}, function (v) {
-    return function (v1) {
-        return v(v1);
-    };
-});
-var bindConj = new Control_Bind.Bind(function () {
-    return applyConj;
-}, function (v) {
-    return function (f) {
-        return f(v);
-    };
-});
-var applicativeConj = new Control_Applicative.Applicative(function () {
-    return applyConj;
-}, Conj);
-var monadConj = new Control_Monad.Monad(function () {
-    return applicativeConj;
-}, function () {
-    return bindConj;
-});
-module.exports = {
-    Conj: Conj, 
-    newtypeConj: newtypeConj, 
-    eqConj: eqConj, 
-    ordConj: ordConj, 
-    boundedConj: boundedConj, 
-    functorConj: functorConj, 
-    invariantConj: invariantConj, 
-    applyConj: applyConj, 
-    applicativeConj: applicativeConj, 
-    bindConj: bindConj, 
-    monadConj: monadConj, 
-    extendConj: extendConj, 
-    comonadConj: comonadConj, 
-    showConj: showConj, 
-    semigroupConj: semigroupConj, 
-    monoidConj: monoidConj, 
-    semiringConj: semiringConj
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.HeytingAlgebra":160,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Prelude":268}],203:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Disj = function (x) {
-    return x;
-};
-var showDisj = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Disj " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var semiringDisj = function (dictHeytingAlgebra) {
-    return new Data_Semiring.Semiring(function (v) {
-        return function (v1) {
-            return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
-        };
-    }, function (v) {
-        return function (v1) {
-            return Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v)(v1);
-        };
-    }, Data_HeytingAlgebra.tt(dictHeytingAlgebra), Data_HeytingAlgebra.ff(dictHeytingAlgebra));
-};
-var semigroupDisj = function (dictHeytingAlgebra) {
-    return new Data_Semigroup.Semigroup(function (v) {
-        return function (v1) {
-            return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
-        };
-    });
-};
-var ordDisj = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeDisj = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Disj);
-var monoidDisj = function (dictHeytingAlgebra) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupDisj(dictHeytingAlgebra);
-    }, Data_HeytingAlgebra.ff(dictHeytingAlgebra));
-};
-var invariantDisj = new Data_Functor_Invariant.Invariant(function (f) {
-    return function (v) {
-        return function (v1) {
-            return f(v1);
-        };
-    };
-});
-var functorDisj = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return f(v);
-    };
-});
-var extendDisj = new Control_Extend.Extend(function () {
-    return functorDisj;
-}, function (f) {
-    return function (x) {
-        return f(x);
-    };
-});
-var eqDisj = function (dictEq) {
-    return dictEq;
-};
-var comonadDisj = new Control_Comonad.Comonad(function () {
-    return extendDisj;
-}, Data_Newtype.unwrap(newtypeDisj));
-var boundedDisj = function (dictBounded) {
-    return dictBounded;
-};
-var applyDisj = new Control_Apply.Apply(function () {
-    return functorDisj;
-}, function (v) {
-    return function (v1) {
-        return v(v1);
-    };
-});
-var bindDisj = new Control_Bind.Bind(function () {
-    return applyDisj;
-}, function (v) {
-    return function (f) {
-        return f(v);
-    };
-});
-var applicativeDisj = new Control_Applicative.Applicative(function () {
-    return applyDisj;
-}, Disj);
-var monadDisj = new Control_Monad.Monad(function () {
-    return applicativeDisj;
-}, function () {
-    return bindDisj;
-});
-module.exports = {
-    Disj: Disj, 
-    newtypeDisj: newtypeDisj, 
-    eqDisj: eqDisj, 
-    ordDisj: ordDisj, 
-    boundedDisj: boundedDisj, 
-    functorDisj: functorDisj, 
-    invariantDisj: invariantDisj, 
-    applyDisj: applyDisj, 
-    applicativeDisj: applicativeDisj, 
-    bindDisj: bindDisj, 
-    monadDisj: monadDisj, 
-    extendDisj: extendDisj, 
-    comonadDisj: comonadDisj, 
-    showDisj: showDisj, 
-    semigroupDisj: semigroupDisj, 
-    monoidDisj: monoidDisj, 
-    semiringDisj: semiringDisj
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.HeytingAlgebra":160,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Prelude":268}],204:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Dual = function (x) {
-    return x;
-};
-var showDual = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Dual " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var semigroupDual = function (dictSemigroup) {
-    return new Data_Semigroup.Semigroup(function (v) {
-        return function (v1) {
-            return Data_Semigroup.append(dictSemigroup)(v1)(v);
-        };
-    });
-};
-var ordDual = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeDual = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Dual);
-var monoidDual = function (dictMonoid) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupDual(dictMonoid.Semigroup0());
-    }, Data_Monoid.mempty(dictMonoid));
-};
-var invariantDual = new Data_Functor_Invariant.Invariant(function (f) {
-    return function (v) {
-        return function (v1) {
-            return f(v1);
-        };
-    };
-});
-var functorDual = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return f(v);
-    };
-});
-var extendDual = new Control_Extend.Extend(function () {
-    return functorDual;
-}, function (f) {
-    return function (x) {
-        return f(x);
-    };
-});
-var eqDual = function (dictEq) {
-    return dictEq;
-};
-var comonadDual = new Control_Comonad.Comonad(function () {
-    return extendDual;
-}, Data_Newtype.unwrap(newtypeDual));
-var boundedDual = function (dictBounded) {
-    return dictBounded;
-};
-var applyDual = new Control_Apply.Apply(function () {
-    return functorDual;
-}, function (v) {
-    return function (v1) {
-        return v(v1);
-    };
-});
-var bindDual = new Control_Bind.Bind(function () {
-    return applyDual;
-}, function (v) {
-    return function (f) {
-        return f(v);
-    };
-});
-var applicativeDual = new Control_Applicative.Applicative(function () {
-    return applyDual;
-}, Dual);
-var monadDual = new Control_Monad.Monad(function () {
-    return applicativeDual;
-}, function () {
-    return bindDual;
-});
-module.exports = {
-    Dual: Dual, 
-    newtypeDual: newtypeDual, 
-    eqDual: eqDual, 
-    ordDual: ordDual, 
-    boundedDual: boundedDual, 
-    functorDual: functorDual, 
-    invariantDual: invariantDual, 
-    applyDual: applyDual, 
-    applicativeDual: applicativeDual, 
-    bindDual: bindDual, 
-    monadDual: monadDual, 
-    extendDual: extendDual, 
-    comonadDual: comonadDual, 
-    showDual: showDual, 
-    semigroupDual: semigroupDual, 
-    monoidDual: monoidDual
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],205:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Semigroup = require("../Data.Semigroup");
-var Prelude = require("../Prelude");
-var Endo = function (x) {
-    return x;
-};
-var semigroupEndo = new Data_Semigroup.Semigroup(function (v) {
-    return function (v1) {
-        return function ($11) {
-            return v(v1($11));
-        };
-    };
-});
-var newtypeEndo = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Endo);
-var monoidEndo = new Data_Monoid.Monoid(function () {
-    return semigroupEndo;
-}, Control_Category.id(Control_Category.categoryFn));
-var invariantEndo = new Data_Functor_Invariant.Invariant(function (ab) {
-    return function (ba) {
-        return function (v) {
-            return function ($12) {
-                return ab(v(ba($12)));
-            };
-        };
-    };
-});
-module.exports = {
-    Endo: Endo, 
-    newtypeEndo: newtypeEndo, 
-    invariantEndo: invariantEndo, 
-    semigroupEndo: semigroupEndo, 
-    monoidEndo: monoidEndo
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Functor.Invariant":153,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Semigroup":229,"../Prelude":268}],206:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Data_Bounded = require("../Data.Bounded");
-var Data_Eq = require("../Data.Eq");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Multiplicative = function (x) {
-    return x;
-};
-var showMultiplicative = function (dictShow) {
-    return new Data_Show.Show(function (v) {
-        return "(Multiplicative " + (Data_Show.show(dictShow)(v) + ")");
-    });
-};
-var semigroupMultiplicative = function (dictSemiring) {
-    return new Data_Semigroup.Semigroup(function (v) {
-        return function (v1) {
-            return Data_Semiring.mul(dictSemiring)(v)(v1);
-        };
-    });
-};
-var ordMultiplicative = function (dictOrd) {
-    return dictOrd;
-};
-var newtypeMultiplicative = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Multiplicative);
-var monoidMultiplicative = function (dictSemiring) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupMultiplicative(dictSemiring);
-    }, Data_Semiring.one(dictSemiring));
-};
-var invariantMultiplicative = new Data_Functor_Invariant.Invariant(function (f) {
-    return function (v) {
-        return function (v1) {
-            return f(v1);
-        };
-    };
-});
-var functorMultiplicative = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return f(v);
-    };
-});
-var extendMultiplicative = new Control_Extend.Extend(function () {
-    return functorMultiplicative;
-}, function (f) {
-    return function (x) {
-        return f(x);
-    };
-});
-var eqMultiplicative = function (dictEq) {
-    return dictEq;
-};
-var comonadMultiplicative = new Control_Comonad.Comonad(function () {
-    return extendMultiplicative;
-}, Data_Newtype.unwrap(newtypeMultiplicative));
-var boundedMultiplicative = function (dictBounded) {
-    return dictBounded;
-};
-var applyMultiplicative = new Control_Apply.Apply(function () {
-    return functorMultiplicative;
-}, function (v) {
-    return function (v1) {
-        return v(v1);
-    };
-});
-var bindMultiplicative = new Control_Bind.Bind(function () {
-    return applyMultiplicative;
-}, function (v) {
-    return function (f) {
-        return f(v);
-    };
-});
-var applicativeMultiplicative = new Control_Applicative.Applicative(function () {
-    return applyMultiplicative;
-}, Multiplicative);
-var monadMultiplicative = new Control_Monad.Monad(function () {
-    return applicativeMultiplicative;
-}, function () {
-    return bindMultiplicative;
-});
-module.exports = {
-    Multiplicative: Multiplicative, 
-    newtypeMultiplicative: newtypeMultiplicative, 
-    eqMultiplicative: eqMultiplicative, 
-    ordMultiplicative: ordMultiplicative, 
-    boundedMultiplicative: boundedMultiplicative, 
-    functorMultiplicative: functorMultiplicative, 
-    invariantMultiplicative: invariantMultiplicative, 
-    applyMultiplicative: applyMultiplicative, 
-    applicativeMultiplicative: applicativeMultiplicative, 
-    bindMultiplicative: bindMultiplicative, 
-    monadMultiplicative: monadMultiplicative, 
-    extendMultiplicative: extendMultiplicative, 
-    comonadMultiplicative: comonadMultiplicative, 
-    showMultiplicative: showMultiplicative, 
-    semigroupMultiplicative: semigroupMultiplicative, 
-    monoidMultiplicative: monoidMultiplicative
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Monad":86,"../Data.Bounded":132,"../Data.Eq":138,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Prelude":268}],207:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Boolean = require("../Data.Boolean");
-var Data_Eq = require("../Data.Eq");
-var Data_EuclideanRing = require("../Data.EuclideanRing");
-var Data_Function = require("../Data.Function");
-var Data_Ord = require("../Data.Ord");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Monoid = function (Semigroup0, mempty) {
-    this.Semigroup0 = Semigroup0;
-    this.mempty = mempty;
-};
-var monoidUnit = new Monoid(function () {
-    return Data_Semigroup.semigroupUnit;
-}, Data_Unit.unit);
-var monoidString = new Monoid(function () {
-    return Data_Semigroup.semigroupString;
-}, "");
-var monoidArray = new Monoid(function () {
-    return Data_Semigroup.semigroupArray;
-}, [  ]);
-var mempty = function (dict) {
-    return dict.mempty;
-};
-var monoidFn = function (dictMonoid) {
-    return new Monoid(function () {
-        return Data_Semigroup.semigroupFn(dictMonoid.Semigroup0());
-    }, Data_Function["const"](mempty(dictMonoid)));
-};
-var power = function (dictMonoid) {
-    return function (x) {
-        var go = function (p) {
-            if (p <= 0) {
-                return mempty(dictMonoid);
-            };
-            if (p === 1) {
-                return x;
-            };
-            if (p % 2 === 0) {
-                var x$prime = go(p / 2 | 0);
-                return Data_Semigroup.append(dictMonoid.Semigroup0())(x$prime)(x$prime);
-            };
-            if (Data_Boolean.otherwise) {
-                var x$prime = go(p / 2 | 0);
-                return Data_Semigroup.append(dictMonoid.Semigroup0())(x$prime)(Data_Semigroup.append(dictMonoid.Semigroup0())(x$prime)(x));
-            };
-            throw new Error("Failed pattern match at Data.Monoid line 49, column 3 - line 53, column 57: " + [ p.constructor.name ]);
-        };
-        return go;
-    };
-};
-module.exports = {
-    Monoid: Monoid, 
-    mempty: mempty, 
-    power: power, 
-    monoidUnit: monoidUnit, 
-    monoidFn: monoidFn, 
-    monoidString: monoidString, 
-    monoidArray: monoidArray
-};
-
-},{"../Data.Boolean":129,"../Data.Eq":138,"../Data.EuclideanRing":140,"../Data.Function":149,"../Data.Ord":216,"../Data.Semigroup":229,"../Data.Unit":249,"../Prelude":268}],208:[function(require,module,exports){
-arguments[4][99][0].apply(exports,arguments)
-},{"dup":99}],209:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Prelude = require("../Prelude");
-var Newtype = function (unwrap, wrap) {
-    this.unwrap = unwrap;
-    this.wrap = wrap;
-};
-var wrap = function (dict) {
-    return dict.wrap;
-};
-var unwrap = function (dict) {
-    return dict.unwrap;
-};
-var underF2 = function (dictFunctor) {
-    return function (dictFunctor1) {
-        return function (dictNewtype) {
-            return function (dictNewtype1) {
-                return function (v) {
-                    return function (f) {
-                        return function ($50) {
-                            return function ($51) {
-                                return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(Data_Function.on(f)(Data_Functor.map(dictFunctor)(wrap(dictNewtype)))($50)($51));
-                            };
-                        };
-                    };
-                };
-            };
-        };
-    };
-};
-var underF = function (dictFunctor) {
-    return function (dictFunctor1) {
-        return function (dictNewtype) {
-            return function (dictNewtype1) {
-                return function (v) {
-                    return function (f) {
-                        return function ($52) {
-                            return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(wrap(dictNewtype))($52)));
-                        };
-                    };
-                };
-            };
-        };
-    };
-};
-var under2 = function (dictNewtype) {
-    return function (dictNewtype1) {
-        return function (v) {
-            return function (f) {
-                return function ($53) {
-                    return function ($54) {
-                        return unwrap(dictNewtype1)(Data_Function.on(f)(wrap(dictNewtype))($53)($54));
-                    };
-                };
-            };
-        };
-    };
-};
-var under = function (dictNewtype) {
-    return function (dictNewtype1) {
-        return function (v) {
-            return function (f) {
-                return function ($55) {
-                    return unwrap(dictNewtype1)(f(wrap(dictNewtype)($55)));
-                };
-            };
-        };
-    };
-};
-var un = function (dictNewtype) {
-    return function (v) {
-        return unwrap(dictNewtype);
-    };
-};
-var traverse = function (dictFunctor) {
-    return function (dictNewtype) {
-        return function (v) {
-            return function (f) {
-                return function ($56) {
-                    return Data_Functor.map(dictFunctor)(wrap(dictNewtype))(f(unwrap(dictNewtype)($56)));
-                };
-            };
-        };
-    };
-};
-var overF2 = function (dictFunctor) {
-    return function (dictFunctor1) {
-        return function (dictNewtype) {
-            return function (dictNewtype1) {
-                return function (v) {
-                    return function (f) {
-                        return function ($57) {
-                            return function ($58) {
-                                return Data_Functor.map(dictFunctor1)(wrap(dictNewtype1))(Data_Function.on(f)(Data_Functor.map(dictFunctor)(unwrap(dictNewtype)))($57)($58));
-                            };
-                        };
-                    };
-                };
-            };
-        };
-    };
-};
-var overF = function (dictFunctor) {
-    return function (dictFunctor1) {
-        return function (dictNewtype) {
-            return function (dictNewtype1) {
-                return function (v) {
-                    return function (f) {
-                        return function ($59) {
-                            return Data_Functor.map(dictFunctor1)(wrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(unwrap(dictNewtype))($59)));
-                        };
-                    };
-                };
-            };
-        };
-    };
-};
-var over2 = function (dictNewtype) {
-    return function (dictNewtype1) {
-        return function (v) {
-            return function (f) {
-                return function ($60) {
-                    return function ($61) {
-                        return wrap(dictNewtype1)(Data_Function.on(f)(unwrap(dictNewtype))($60)($61));
-                    };
-                };
-            };
-        };
-    };
-};
-var over = function (dictNewtype) {
-    return function (dictNewtype1) {
-        return function (v) {
-            return function (f) {
-                return function ($62) {
-                    return wrap(dictNewtype1)(f(unwrap(dictNewtype)($62)));
-                };
-            };
-        };
-    };
-};
-var op = function (dictNewtype) {
-    return un(dictNewtype);
-};
-var collect = function (dictFunctor) {
-    return function (dictNewtype) {
-        return function (v) {
-            return function (f) {
-                return function ($63) {
-                    return wrap(dictNewtype)(f(Data_Functor.map(dictFunctor)(unwrap(dictNewtype))($63)));
-                };
-            };
-        };
-    };
-};
-var alaF = function (dictFunctor) {
-    return function (dictFunctor1) {
-        return function (dictNewtype) {
-            return function (dictNewtype1) {
-                return function (v) {
-                    return function (f) {
-                        return function ($64) {
-                            return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(wrap(dictNewtype))($64)));
-                        };
-                    };
-                };
-            };
-        };
-    };
-};
-var ala = function (dictFunctor) {
-    return function (dictNewtype) {
-        return function (dictNewtype1) {
-            return function (v) {
-                return function (f) {
-                    return Data_Functor.map(dictFunctor)(unwrap(dictNewtype))(f(wrap(dictNewtype1)));
-                };
-            };
-        };
-    };
-};
-module.exports = {
-    Newtype: Newtype, 
-    ala: ala, 
-    alaF: alaF, 
-    collect: collect, 
-    op: op, 
-    over: over, 
-    over2: over2, 
-    overF: overF, 
-    overF2: overF2, 
-    traverse: traverse, 
-    un: un, 
-    under: under, 
-    under2: under2, 
-    underF: underF, 
-    underF2: underF2, 
-    unwrap: unwrap, 
-    wrap: wrap
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Function":149,"../Data.Functor":155,"../Prelude":268}],210:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Plus = require("../Control.Plus");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Prelude = require("../Prelude");
-var NonEmpty = (function () {
-    function NonEmpty(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    NonEmpty.create = function (value0) {
-        return function (value1) {
-            return new NonEmpty(value0, value1);
-        };
-    };
-    return NonEmpty;
-})();
-var tail = function (v) {
-    return v.value1;
-};
-var singleton = function (dictPlus) {
-    return function (a) {
-        return new NonEmpty(a, Control_Plus.empty(dictPlus));
-    };
-};
-var showNonEmpty = function (dictShow) {
-    return function (dictShow1) {
-        return new Data_Show.Show(function (v) {
-            return "(NonEmpty " + (Data_Show.show(dictShow)(v.value0) + (" " + (Data_Show.show(dictShow1)(v.value1) + ")")));
-        });
-    };
-};
-var oneOf = function (dictAlternative) {
-    return function (v) {
-        return Control_Alt.alt((dictAlternative.Plus1()).Alt0())(Control_Applicative.pure(dictAlternative.Applicative0())(v.value0))(v.value1);
-    };
-};
-var head = function (v) {
-    return v.value0;
-};
-var functorNonEmpty = function (dictFunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return function (v) {
-            return new NonEmpty(f(v.value0), Data_Functor.map(dictFunctor)(f)(v.value1));
-        };
-    });
-};
-var fromNonEmpty = function (f) {
-    return function (v) {
-        return f(v.value0)(v.value1);
-    };
-};
-var foldl1 = function (dictFoldable) {
-    return function (f) {
-        return function (v) {
-            return Data_Foldable.foldl(dictFoldable)(f)(v.value0)(v.value1);
-        };
-    };
-};
-var foldableNonEmpty = function (dictFoldable) {
-    return new Data_Foldable.Foldable(function (dictMonoid) {
-        return function (f) {
-            return function (v) {
-                return Data_Semigroup.append(dictMonoid.Semigroup0())(f(v.value0))(Data_Foldable.foldMap(dictFoldable)(dictMonoid)(f)(v.value1));
-            };
-        };
-    }, function (f) {
-        return function (b) {
-            return function (v) {
-                return Data_Foldable.foldl(dictFoldable)(f)(f(b)(v.value0))(v.value1);
-            };
-        };
-    }, function (f) {
-        return function (b) {
-            return function (v) {
-                return f(v.value0)(Data_Foldable.foldr(dictFoldable)(f)(b)(v.value1));
-            };
-        };
-    });
-};
-var traversableNonEmpty = function (dictTraversable) {
-    return new Data_Traversable.Traversable(function () {
-        return foldableNonEmpty(dictTraversable.Foldable1());
-    }, function () {
-        return functorNonEmpty(dictTraversable.Functor0());
-    }, function (dictApplicative) {
-        return function (v) {
-            return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(NonEmpty.create)(v.value0))(Data_Traversable.sequence(dictTraversable)(dictApplicative)(v.value1));
-        };
-    }, function (dictApplicative) {
-        return function (f) {
-            return function (v) {
-                return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(NonEmpty.create)(f(v.value0)))(Data_Traversable.traverse(dictTraversable)(dictApplicative)(f)(v.value1));
-            };
-        };
-    });
-};
-var foldMap1 = function (dictSemigroup) {
-    return function (dictFoldable) {
-        return function (f) {
-            return function (v) {
-                return Data_Foldable.foldl(dictFoldable)(function (s) {
-                    return function (a1) {
-                        return Data_Semigroup.append(dictSemigroup)(s)(f(a1));
-                    };
-                })(f(v.value0))(v.value1);
-            };
-        };
-    };
-};
-var fold1 = function (dictSemigroup) {
-    return function (dictFoldable) {
-        return foldMap1(dictSemigroup)(dictFoldable)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var eq1NonEmpty = function (dictEq1) {
-    return new Data_Eq.Eq1(function (dictEq) {
-        return function (v) {
-            return function (v1) {
-                return Data_Eq.eq(dictEq)(v.value0)(v1.value0) && Data_Eq.eq1(dictEq1)(dictEq)(v.value1)(v1.value1);
-            };
-        };
-    });
-};
-var eqNonEmpty = function (dictEq1) {
-    return function (dictEq) {
-        return new Data_Eq.Eq(Data_Eq.eq1(eq1NonEmpty(dictEq1))(dictEq));
-    };
-};
-var ord1NonEmpty = function (dictOrd1) {
-    return new Data_Ord.Ord1(function () {
-        return eq1NonEmpty(dictOrd1.Eq10());
-    }, function (dictOrd) {
-        return function (v) {
-            return function (v1) {
-                var v2 = Data_Ord.compare(dictOrd)(v.value0)(v1.value0);
-                if (v2 instanceof Data_Ordering.EQ) {
-                    return Data_Ord.compare1(dictOrd1)(dictOrd)(v.value1)(v1.value1);
-                };
-                return v2;
-            };
-        };
-    });
-};
-var ordNonEmpty = function (dictOrd1) {
-    return function (dictOrd) {
-        return new Data_Ord.Ord(function () {
-            return eqNonEmpty(dictOrd1.Eq10())(dictOrd.Eq0());
-        }, Data_Ord.compare1(ord1NonEmpty(dictOrd1))(dictOrd));
-    };
-};
-module.exports = {
-    NonEmpty: NonEmpty, 
-    fold1: fold1, 
-    foldMap1: foldMap1, 
-    foldl1: foldl1, 
-    fromNonEmpty: fromNonEmpty, 
-    head: head, 
-    oneOf: oneOf, 
-    singleton: singleton, 
-    tail: tail, 
-    showNonEmpty: showNonEmpty, 
-    eqNonEmpty: eqNonEmpty, 
-    eq1NonEmpty: eq1NonEmpty, 
-    ordNonEmpty: ordNonEmpty, 
-    ord1NonEmpty: ord1NonEmpty, 
-    functorNonEmpty: functorNonEmpty, 
-    foldableNonEmpty: foldableNonEmpty, 
-    traversableNonEmpty: traversableNonEmpty
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Plus":91,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Traversable":244,"../Prelude":268}],211:[function(require,module,exports){
-"use strict";
-
-exports["null"] = null;
-
-exports.nullable = function (a, r, f) {
-  return a == null ? r : f(a);
-};
-
-exports.notNull = function (x) {
-  return x;
-};
-
-},{}],212:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Ord = require("../Data.Ord");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var toNullable = Data_Maybe.maybe($foreign["null"])($foreign.notNull);
-var toMaybe = function (n) {
-    return $foreign.nullable(n, Data_Maybe.Nothing.value, Data_Maybe.Just.create);
-};
-var showNullable = function (dictShow) {
-    return new Data_Show.Show(function ($5) {
-        return Data_Maybe.maybe("null")(Data_Show.show(dictShow))(toMaybe($5));
-    });
-};
-var eqNullable = function (dictEq) {
-    return new Data_Eq.Eq(Data_Function.on(Data_Eq.eq(Data_Maybe.eqMaybe(dictEq)))(toMaybe));
-};
-var ordNullable = function (dictOrd) {
-    return new Data_Ord.Ord(function () {
-        return eqNullable(dictOrd.Eq0());
-    }, Data_Function.on(Data_Ord.compare(Data_Maybe.ordMaybe(dictOrd)))(toMaybe));
-};
-var eq1Nullable = new Data_Eq.Eq1(function (dictEq) {
-    return Data_Eq.eq(eqNullable(dictEq));
-});
-var ord1Nullable = new Data_Ord.Ord1(function () {
-    return eq1Nullable;
-}, function (dictOrd) {
-    return Data_Ord.compare(ordNullable(dictOrd));
-});
-module.exports = {
-    toMaybe: toMaybe, 
-    toNullable: toNullable, 
-    showNullable: showNullable, 
-    eqNullable: eqNullable, 
-    eq1Nullable: eq1Nullable, 
-    ordNullable: ordNullable, 
-    ord1Nullable: ord1Nullable
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.Maybe":198,"../Data.Ord":216,"../Data.Show":233,"../Prelude":268,"./foreign":211}],213:[function(require,module,exports){
-"use strict";
-
-exports.unsafeCompareImpl = function (lt) {
-  return function (eq) {
-    return function (gt) {
-      return function (x) {
-        return function (y) {
-          return x < y ? lt : x === y ? eq : gt;
-        };
-      };
-    };
-  };
-};
-
-},{}],214:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Ordering = require("../Data.Ordering");
-var unsafeCompare = $foreign.unsafeCompareImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value);
-module.exports = {
-    unsafeCompare: unsafeCompare
-};
-
-},{"../Data.Ordering":217,"./foreign":213}],215:[function(require,module,exports){
-"use strict";
-
-exports.ordArrayImpl = function (f) {
-  return function (xs) {
-    return function (ys) {
-      var i = 0;
-      var xlen = xs.length;
-      var ylen = ys.length;
-      while (i < xlen && i < ylen) {
-        var x = xs[i];
-        var y = ys[i];
-        var o = f(x)(y);
-        if (o !== 0) {
-          return o;
-        }
-        i++;
-      }
-      if (xlen === ylen) {
-        return 0;
-      } else if (xlen > ylen) {
-        return -1;
-      } else {
-        return 1;
-      }
-    };
-  };
-};
-
-},{}],216:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Ord_Unsafe = require("../Data.Ord.Unsafe");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Unit = require("../Data.Unit");
-var Data_Void = require("../Data.Void");
-var Ord = function (Eq0, compare) {
-    this.Eq0 = Eq0;
-    this.compare = compare;
-};
-var Ord1 = function (Eq10, compare1) {
-    this.Eq10 = Eq10;
-    this.compare1 = compare1;
-};
-var ordVoid = new Ord(function () {
-    return Data_Eq.eqVoid;
-}, function (v) {
-    return function (v1) {
-        return Data_Ordering.EQ.value;
-    };
-});
-var ordUnit = new Ord(function () {
-    return Data_Eq.eqUnit;
-}, function (v) {
-    return function (v1) {
-        return Data_Ordering.EQ.value;
-    };
-});
-var ordString = new Ord(function () {
-    return Data_Eq.eqString;
-}, Data_Ord_Unsafe.unsafeCompare);
-var ordOrdering = new Ord(function () {
-    return Data_Ordering.eqOrdering;
-}, function (v) {
-    return function (v1) {
-        if (v instanceof Data_Ordering.LT && v1 instanceof Data_Ordering.LT) {
-            return Data_Ordering.EQ.value;
-        };
-        if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.EQ) {
-            return Data_Ordering.EQ.value;
-        };
-        if (v instanceof Data_Ordering.GT && v1 instanceof Data_Ordering.GT) {
-            return Data_Ordering.EQ.value;
-        };
-        if (v instanceof Data_Ordering.LT) {
-            return Data_Ordering.LT.value;
-        };
-        if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.LT) {
-            return Data_Ordering.GT.value;
-        };
-        if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.GT) {
-            return Data_Ordering.LT.value;
-        };
-        if (v instanceof Data_Ordering.GT) {
-            return Data_Ordering.GT.value;
-        };
-        throw new Error("Failed pattern match at Data.Ord line 69, column 3 - line 69, column 21: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var ordNumber = new Ord(function () {
-    return Data_Eq.eqNumber;
-}, Data_Ord_Unsafe.unsafeCompare);
-var ordInt = new Ord(function () {
-    return Data_Eq.eqInt;
-}, Data_Ord_Unsafe.unsafeCompare);
-var ordChar = new Ord(function () {
-    return Data_Eq.eqChar;
-}, Data_Ord_Unsafe.unsafeCompare);
-var ordBoolean = new Ord(function () {
-    return Data_Eq.eqBoolean;
-}, Data_Ord_Unsafe.unsafeCompare);
-var compare1 = function (dict) {
-    return dict.compare1;
-};
-var compare = function (dict) {
-    return dict.compare;
-};
-var comparing = function (dictOrd) {
-    return function (f) {
-        return Data_Function.on(compare(dictOrd))(f);
-    };
-};
-var greaterThan = function (dictOrd) {
-    return function (a1) {
-        return function (a2) {
-            var v = compare(dictOrd)(a1)(a2);
-            if (v instanceof Data_Ordering.GT) {
-                return true;
-            };
-            return false;
-        };
-    };
-};
-var greaterThanOrEq = function (dictOrd) {
-    return function (a1) {
-        return function (a2) {
-            var v = compare(dictOrd)(a1)(a2);
-            if (v instanceof Data_Ordering.LT) {
-                return false;
-            };
-            return true;
-        };
-    };
-};
-var signum = function (dictOrd) {
-    return function (dictRing) {
-        return function (x) {
-            var $33 = greaterThanOrEq(dictOrd)(x)(Data_Semiring.zero(dictRing.Semiring0()));
-            if ($33) {
-                return Data_Semiring.one(dictRing.Semiring0());
-            };
-            return Data_Ring.negate(dictRing)(Data_Semiring.one(dictRing.Semiring0()));
-        };
-    };
-};
-var lessThan = function (dictOrd) {
-    return function (a1) {
-        return function (a2) {
-            var v = compare(dictOrd)(a1)(a2);
-            if (v instanceof Data_Ordering.LT) {
-                return true;
-            };
-            return false;
-        };
-    };
-};
-var lessThanOrEq = function (dictOrd) {
-    return function (a1) {
-        return function (a2) {
-            var v = compare(dictOrd)(a1)(a2);
-            if (v instanceof Data_Ordering.GT) {
-                return false;
-            };
-            return true;
-        };
-    };
-};
-var max = function (dictOrd) {
-    return function (x) {
-        return function (y) {
-            var v = compare(dictOrd)(x)(y);
-            if (v instanceof Data_Ordering.LT) {
-                return y;
-            };
-            if (v instanceof Data_Ordering.EQ) {
-                return x;
-            };
-            if (v instanceof Data_Ordering.GT) {
-                return x;
-            };
-            throw new Error("Failed pattern match at Data.Ord line 123, column 3 - line 126, column 12: " + [ v.constructor.name ]);
-        };
-    };
-};
-var min = function (dictOrd) {
-    return function (x) {
-        return function (y) {
-            var v = compare(dictOrd)(x)(y);
-            if (v instanceof Data_Ordering.LT) {
-                return x;
-            };
-            if (v instanceof Data_Ordering.EQ) {
-                return x;
-            };
-            if (v instanceof Data_Ordering.GT) {
-                return y;
-            };
-            throw new Error("Failed pattern match at Data.Ord line 114, column 3 - line 117, column 12: " + [ v.constructor.name ]);
-        };
-    };
-};
-var ordArray = function (dictOrd) {
-    return new Ord(function () {
-        return Data_Eq.eqArray(dictOrd.Eq0());
-    }, (function () {
-        var toDelta = function (x) {
-            return function (y) {
-                var v = compare(dictOrd)(x)(y);
-                if (v instanceof Data_Ordering.EQ) {
-                    return 0;
-                };
-                if (v instanceof Data_Ordering.LT) {
-                    return 1;
-                };
-                if (v instanceof Data_Ordering.GT) {
-                    return -1 | 0;
-                };
-                throw new Error("Failed pattern match at Data.Ord line 61, column 7 - line 66, column 1: " + [ v.constructor.name ]);
-            };
-        };
-        return function (xs) {
-            return function (ys) {
-                return compare(ordInt)(0)($foreign.ordArrayImpl(toDelta)(xs)(ys));
-            };
-        };
-    })());
-};
-var ord1Array = new Ord1(function () {
-    return Data_Eq.eq1Array;
-}, function (dictOrd) {
-    return compare(ordArray(dictOrd));
-});
-var clamp = function (dictOrd) {
-    return function (low) {
-        return function (hi) {
-            return function (x) {
-                return min(dictOrd)(hi)(max(dictOrd)(low)(x));
-            };
-        };
-    };
-};
-var between = function (dictOrd) {
-    return function (low) {
-        return function (hi) {
-            return function (x) {
-                if (lessThan(dictOrd)(x)(low)) {
-                    return false;
-                };
-                if (greaterThan(dictOrd)(x)(hi)) {
-                    return false;
-                };
-                return true;
-            };
-        };
-    };
-};
-var abs = function (dictOrd) {
-    return function (dictRing) {
-        return function (x) {
-            var $42 = greaterThanOrEq(dictOrd)(x)(Data_Semiring.zero(dictRing.Semiring0()));
-            if ($42) {
-                return x;
-            };
-            return Data_Ring.negate(dictRing)(x);
-        };
-    };
-};
-module.exports = {
-    Ord: Ord, 
-    Ord1: Ord1, 
-    abs: abs, 
-    between: between, 
-    clamp: clamp, 
-    compare: compare, 
-    compare1: compare1, 
-    comparing: comparing, 
-    greaterThan: greaterThan, 
-    greaterThanOrEq: greaterThanOrEq, 
-    lessThan: lessThan, 
-    lessThanOrEq: lessThanOrEq, 
-    max: max, 
-    min: min, 
-    signum: signum, 
-    ordBoolean: ordBoolean, 
-    ordInt: ordInt, 
-    ordNumber: ordNumber, 
-    ordString: ordString, 
-    ordChar: ordChar, 
-    ordUnit: ordUnit, 
-    ordVoid: ordVoid, 
-    ordArray: ordArray, 
-    ordOrdering: ordOrdering, 
-    ord1Array: ord1Array
-};
-
-},{"../Data.Eq":138,"../Data.Function":149,"../Data.Ord.Unsafe":214,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semiring":231,"../Data.Unit":249,"../Data.Void":250,"./foreign":215}],217:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Eq = require("../Data.Eq");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var LT = (function () {
-    function LT() {
-
-    };
-    LT.value = new LT();
-    return LT;
-})();
-var GT = (function () {
-    function GT() {
-
-    };
-    GT.value = new GT();
-    return GT;
-})();
-var EQ = (function () {
-    function EQ() {
-
-    };
-    EQ.value = new EQ();
-    return EQ;
-})();
-var showOrdering = new Data_Show.Show(function (v) {
-    if (v instanceof LT) {
-        return "LT";
-    };
-    if (v instanceof GT) {
-        return "GT";
-    };
-    if (v instanceof EQ) {
-        return "EQ";
-    };
-    throw new Error("Failed pattern match at Data.Ordering line 27, column 3 - line 28, column 3: " + [ v.constructor.name ]);
-});
-var semigroupOrdering = new Data_Semigroup.Semigroup(function (v) {
-    return function (v1) {
-        if (v instanceof LT) {
-            return LT.value;
-        };
-        if (v instanceof GT) {
-            return GT.value;
-        };
-        if (v instanceof EQ) {
-            return v1;
-        };
-        throw new Error("Failed pattern match at Data.Ordering line 22, column 3 - line 22, column 19: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-});
-var invert = function (v) {
-    if (v instanceof GT) {
-        return LT.value;
-    };
-    if (v instanceof EQ) {
-        return EQ.value;
-    };
-    if (v instanceof LT) {
-        return GT.value;
-    };
-    throw new Error("Failed pattern match at Data.Ordering line 34, column 1 - line 34, column 15: " + [ v.constructor.name ]);
-};
-var eqOrdering = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        if (v instanceof LT && v1 instanceof LT) {
-            return true;
-        };
-        if (v instanceof GT && v1 instanceof GT) {
-            return true;
-        };
-        if (v instanceof EQ && v1 instanceof EQ) {
-            return true;
-        };
-        return false;
-    };
-});
-module.exports = {
-    LT: LT, 
-    GT: GT, 
-    EQ: EQ, 
-    invert: invert, 
-    eqOrdering: eqOrdering, 
-    semigroupOrdering: semigroupOrdering, 
-    showOrdering: showOrdering
-};
-
-},{"../Data.Eq":138,"../Data.Semigroup":229,"../Data.Show":233}],218:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Profunctor = require("../Data.Profunctor");
-var Prelude = require("../Prelude");
-var Choice = function (Profunctor0, left, right) {
-    this.Profunctor0 = Profunctor0;
-    this.left = left;
-    this.right = right;
-};
-var right = function (dict) {
-    return dict.right;
-};
-var left = function (dict) {
-    return dict.left;
-};
-var splitChoice = function (dictCategory) {
-    return function (dictChoice) {
-        return function (l) {
-            return function (r) {
-                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(left(dictChoice)(l))(right(dictChoice)(r));
-            };
-        };
-    };
-};
-var fanin = function (dictCategory) {
-    return function (dictChoice) {
-        return function (l) {
-            return function (r) {
-                var join = Data_Profunctor.dimap(dictChoice.Profunctor0())(Data_Either.either(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn)))(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(dictCategory));
-                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(splitChoice(dictCategory)(dictChoice)(l)(r))(join);
-            };
-        };
-    };
-};
-var choiceFn = new Choice(function () {
-    return Data_Profunctor.profunctorFn;
-}, function (v) {
-    return function (v1) {
-        if (v1 instanceof Data_Either.Left) {
-            return Data_Either.Left.create(v(v1.value0));
-        };
-        if (v1 instanceof Data_Either.Right) {
-            return new Data_Either.Right(v1.value0);
-        };
-        throw new Error("Failed pattern match at Data.Profunctor.Choice line 33, column 3 - line 33, column 36: " + [ v.constructor.name, v1.constructor.name ]);
-    };
-}, Data_Functor.map(Data_Either.functorEither));
-module.exports = {
-    Choice: Choice, 
-    fanin: fanin, 
-    left: left, 
-    right: right, 
-    splitChoice: splitChoice, 
-    choiceFn: choiceFn
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Profunctor":225,"../Prelude":268}],219:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Profunctor = require("../Data.Profunctor");
-var Prelude = require("../Prelude");
-var Closed = function (Profunctor0, closed) {
-    this.Profunctor0 = Profunctor0;
-    this.closed = closed;
-};
-var closedFunction = new Closed(function () {
-    return Data_Profunctor.profunctorFn;
-}, Control_Semigroupoid.compose(Control_Semigroupoid.semigroupoidFn));
-var closed = function (dict) {
-    return dict.closed;
-};
-module.exports = {
-    Closed: Closed, 
-    closed: closed, 
-    closedFunction: closedFunction
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Profunctor":225,"../Prelude":268}],220:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Either = require("../Data.Either");
-var Data_Profunctor = require("../Data.Profunctor");
-var Cochoice = function (Profunctor0, unleft, unright) {
-    this.Profunctor0 = Profunctor0;
-    this.unleft = unleft;
-    this.unright = unright;
-};
-var unright = function (dict) {
-    return dict.unright;
-};
-var unleft = function (dict) {
-    return dict.unleft;
-};
-module.exports = {
-    Cochoice: Cochoice, 
-    unleft: unleft, 
-    unright: unright
-};
-
-},{"../Data.Either":136,"../Data.Profunctor":225}],221:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Monad = require("../Control.Monad");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Distributive = require("../Data.Distributive");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
-var Data_Profunctor_Cochoice = require("../Data.Profunctor.Cochoice");
-var Data_Profunctor_Costrong = require("../Data.Profunctor.Costrong");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Costar = function (x) {
-    return x;
-};
-var semigroupoidCostar = function (dictExtend) {
-    return new Control_Semigroupoid.Semigroupoid(function (v) {
-        return function (v1) {
-            return Control_Extend.composeCoKleisliFlipped(dictExtend)(v)(v1);
-        };
-    });
-};
-var profunctorCostar = function (dictFunctor) {
-    return new Data_Profunctor.Profunctor(function (f) {
-        return function (g) {
-            return function (v) {
-                return function ($51) {
-                    return g(v(Data_Functor.map(dictFunctor)(f)($51)));
-                };
-            };
-        };
-    });
-};
-var strongCostar = function (dictComonad) {
-    return new Data_Profunctor_Strong.Strong(function () {
-        return profunctorCostar((dictComonad.Extend0()).Functor0());
-    }, function (v) {
-        return function (x) {
-            return new Data_Tuple.Tuple(v(Data_Functor.map((dictComonad.Extend0()).Functor0())(Data_Tuple.fst)(x)), Data_Tuple.snd(Control_Comonad.extract(dictComonad)(x)));
-        };
-    }, function (v) {
-        return function (x) {
-            return new Data_Tuple.Tuple(Data_Tuple.fst(Control_Comonad.extract(dictComonad)(x)), v(Data_Functor.map((dictComonad.Extend0()).Functor0())(Data_Tuple.snd)(x)));
-        };
-    });
-};
-var newtypeCostar = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Costar);
-var functorCostar = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return function ($52) {
-            return f(v($52));
-        };
-    };
-});
-var invariantCostar = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorCostar));
-var distributiveCostar = new Data_Distributive.Distributive(function () {
-    return functorCostar;
-}, function (dictFunctor) {
-    return function (f) {
-        return function ($53) {
-            return Data_Distributive.distribute(distributiveCostar)(dictFunctor)(Data_Functor.map(dictFunctor)(f)($53));
-        };
-    };
-}, function (dictFunctor) {
-    return function (f) {
-        return function (a) {
-            return Data_Functor.map(dictFunctor)(function (v) {
-                return v(a);
-            })(f);
-        };
-    };
-});
-var costrongCostar = function (dictFunctor) {
-    return new Data_Profunctor_Costrong.Costrong(function () {
-        return profunctorCostar(dictFunctor);
-    }, function (v) {
-        return function (fb) {
-            var bd = v(Data_Functor.map(dictFunctor)(function (a) {
-                return new Data_Tuple.Tuple(a, Data_Tuple.snd(bd));
-            })(fb));
-            return Data_Tuple.fst(bd);
-        };
-    }, function (v) {
-        return function (fb) {
-            var db = v(Data_Functor.map(dictFunctor)(function (a) {
-                return new Data_Tuple.Tuple(Data_Tuple.fst(db), a);
-            })(fb));
-            return Data_Tuple.snd(db);
-        };
-    });
-};
-var cochoiceCostar = function (dictApplicative) {
-    return new Data_Profunctor_Cochoice.Cochoice(function () {
-        return profunctorCostar((dictApplicative.Apply0()).Functor0());
-    }, function (v) {
-        var g = function ($54) {
-            return Data_Either.either(Control_Category.id(Control_Category.categoryFn))(function (r) {
-                return g(Control_Applicative.pure(dictApplicative)(new Data_Either.Right(r)));
-            })(v($54));
-        };
-        return function ($55) {
-            return g(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Left.create)($55));
-        };
-    }, function (v) {
-        var g = function ($56) {
-            return Data_Either.either(function (l) {
-                return g(Control_Applicative.pure(dictApplicative)(new Data_Either.Left(l)));
-            })(Control_Category.id(Control_Category.categoryFn))(v($56));
-        };
-        return function ($57) {
-            return g(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Right.create)($57));
-        };
-    });
-};
-var closedCostar = function (dictFunctor) {
-    return new Data_Profunctor_Closed.Closed(function () {
-        return profunctorCostar(dictFunctor);
-    }, function (v) {
-        return function (g) {
-            return function (x) {
-                return v(Data_Functor.map(dictFunctor)(function (v1) {
-                    return v1(x);
-                })(g));
-            };
-        };
-    });
-};
-var categoryCostar = function (dictComonad) {
-    return new Control_Category.Category(function () {
-        return semigroupoidCostar(dictComonad.Extend0());
-    }, Control_Comonad.extract(dictComonad));
-};
-var applyCostar = new Control_Apply.Apply(function () {
-    return functorCostar;
-}, function (v) {
-    return function (v1) {
-        return function (a) {
-            return v(a)(v1(a));
-        };
-    };
-});
-var bindCostar = new Control_Bind.Bind(function () {
-    return applyCostar;
-}, function (v) {
-    return function (f) {
-        return function (x) {
-            var v1 = f(v(x));
-            return v1(x);
-        };
-    };
-});
-var applicativeCostar = new Control_Applicative.Applicative(function () {
-    return applyCostar;
-}, function (a) {
-    return function (v) {
-        return a;
-    };
-});
-var monadCostar = new Control_Monad.Monad(function () {
-    return applicativeCostar;
-}, function () {
-    return bindCostar;
-});
-module.exports = {
-    Costar: Costar, 
-    newtypeCostar: newtypeCostar, 
-    semigroupoidCostar: semigroupoidCostar, 
-    categoryCostar: categoryCostar, 
-    functorCostar: functorCostar, 
-    invariantCostar: invariantCostar, 
-    applyCostar: applyCostar, 
-    applicativeCostar: applicativeCostar, 
-    bindCostar: bindCostar, 
-    monadCostar: monadCostar, 
-    distributiveCostar: distributiveCostar, 
-    profunctorCostar: profunctorCostar, 
-    strongCostar: strongCostar, 
-    costrongCostar: costrongCostar, 
-    cochoiceCostar: cochoiceCostar, 
-    closedCostar: closedCostar
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Monad":86,"../Control.Semigroupoid":92,"../Data.Distributive":135,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Closed":219,"../Data.Profunctor.Cochoice":220,"../Data.Profunctor.Costrong":222,"../Data.Profunctor.Strong":224,"../Data.Tuple":245,"../Prelude":268}],222:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Tuple = require("../Data.Tuple");
-var Costrong = function (Profunctor0, unfirst, unsecond) {
-    this.Profunctor0 = Profunctor0;
-    this.unfirst = unfirst;
-    this.unsecond = unsecond;
-};
-var unsecond = function (dict) {
-    return dict.unsecond;
-};
-var unfirst = function (dict) {
-    return dict.unfirst;
-};
-module.exports = {
-    Costrong: Costrong, 
-    unfirst: unfirst, 
-    unsecond: unsecond
-};
-
-},{"../Data.Profunctor":225,"../Data.Tuple":245}],223:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Alt = require("../Control.Alt");
-var Control_Alternative = require("../Control.Alternative");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Monad = require("../Control.Monad");
-var Control_MonadPlus = require("../Control.MonadPlus");
-var Control_MonadZero = require("../Control.MonadZero");
-var Control_Plus = require("../Control.Plus");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Distributive = require("../Data.Distributive");
-var Data_Either = require("../Data.Either");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
-var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
-var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Star = function (x) {
-    return x;
-};
-var semigroupoidStar = function (dictBind) {
-    return new Control_Semigroupoid.Semigroupoid(function (v) {
-        return function (v1) {
-            return function (x) {
-                return Control_Bind.bind(dictBind)(v1(x))(v);
-            };
-        };
-    });
-};
-var profunctorStar = function (dictFunctor) {
-    return new Data_Profunctor.Profunctor(function (f) {
-        return function (g) {
-            return function (v) {
-                return function ($75) {
-                    return Data_Functor.map(dictFunctor)(g)(v(f($75)));
-                };
-            };
-        };
-    });
-};
-var strongStar = function (dictFunctor) {
-    return new Data_Profunctor_Strong.Strong(function () {
-        return profunctorStar(dictFunctor);
-    }, function (v) {
-        return function (v1) {
-            return Data_Functor.map(dictFunctor)(function (v2) {
-                return new Data_Tuple.Tuple(v2, v1.value1);
-            })(v(v1.value0));
-        };
-    }, function (v) {
-        return function (v1) {
-            return Data_Functor.map(dictFunctor)(Data_Tuple.Tuple.create(v1.value0))(v(v1.value1));
-        };
-    });
-};
-var newtypeStar = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Star);
-var invariantStar = function (dictInvariant) {
-    return new Data_Functor_Invariant.Invariant(function (f) {
-        return function (g) {
-            return function (v) {
-                return function ($76) {
-                    return Data_Functor_Invariant.imap(dictInvariant)(f)(g)(v($76));
-                };
-            };
-        };
-    });
-};
-var functorStar = function (dictFunctor) {
-    return new Data_Functor.Functor(function (f) {
-        return function (v) {
-            return function ($77) {
-                return Data_Functor.map(dictFunctor)(f)(v($77));
-            };
-        };
-    });
-};
-var distributiveStar = function (dictDistributive) {
-    return new Data_Distributive.Distributive(function () {
-        return functorStar(dictDistributive.Functor0());
-    }, function (dictFunctor) {
-        return function (f) {
-            return function ($78) {
-                return Data_Distributive.distribute(distributiveStar(dictDistributive))(dictFunctor)(Data_Functor.map(dictFunctor)(f)($78));
-            };
-        };
-    }, function (dictFunctor) {
-        return function (f) {
-            return function (a) {
-                return Data_Distributive.collect(dictDistributive)(dictFunctor)(function (v) {
-                    return v(a);
-                })(f);
-            };
-        };
-    });
-};
-var closedStar = function (dictDistributive) {
-    return new Data_Profunctor_Closed.Closed(function () {
-        return profunctorStar(dictDistributive.Functor0());
-    }, function (v) {
-        return function (g) {
-            return Data_Distributive.distribute(dictDistributive)(Data_Functor.functorFn)(function ($79) {
-                return v(g($79));
-            });
-        };
-    });
-};
-var choiceStar = function (dictApplicative) {
-    return new Data_Profunctor_Choice.Choice(function () {
-        return profunctorStar((dictApplicative.Apply0()).Functor0());
-    }, function (v) {
-        return Star(Data_Either.either(function ($80) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Left.create)(v($80));
-        })(function ($81) {
-            return Control_Applicative.pure(dictApplicative)(Data_Either.Right.create($81));
-        }));
-    }, function (v) {
-        return Star(Data_Either.either(function ($82) {
-            return Control_Applicative.pure(dictApplicative)(Data_Either.Left.create($82));
-        })(function ($83) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Right.create)(v($83));
-        }));
-    });
-};
-var categoryStar = function (dictMonad) {
-    return new Control_Category.Category(function () {
-        return semigroupoidStar(dictMonad.Bind1());
-    }, Control_Applicative.pure(dictMonad.Applicative0()));
-};
-var applyStar = function (dictApply) {
-    return new Control_Apply.Apply(function () {
-        return functorStar(dictApply.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return function (a) {
-                return Control_Apply.apply(dictApply)(v(a))(v1(a));
-            };
-        };
-    });
-};
-var bindStar = function (dictBind) {
-    return new Control_Bind.Bind(function () {
-        return applyStar(dictBind.Apply0());
-    }, function (v) {
-        return function (f) {
-            return function (x) {
-                return Control_Bind.bind(dictBind)(v(x))(function (a) {
-                    var v1 = f(a);
-                    return v1(x);
-                });
-            };
-        };
-    });
-};
-var applicativeStar = function (dictApplicative) {
-    return new Control_Applicative.Applicative(function () {
-        return applyStar(dictApplicative.Apply0());
-    }, function (a) {
-        return function (v) {
-            return Control_Applicative.pure(dictApplicative)(a);
-        };
-    });
-};
-var monadStar = function (dictMonad) {
-    return new Control_Monad.Monad(function () {
-        return applicativeStar(dictMonad.Applicative0());
-    }, function () {
-        return bindStar(dictMonad.Bind1());
-    });
-};
-var altStar = function (dictAlt) {
-    return new Control_Alt.Alt(function () {
-        return functorStar(dictAlt.Functor0());
-    }, function (v) {
-        return function (v1) {
-            return function (a) {
-                return Control_Alt.alt(dictAlt)(v(a))(v1(a));
-            };
-        };
-    });
-};
-var plusStar = function (dictPlus) {
-    return new Control_Plus.Plus(function () {
-        return altStar(dictPlus.Alt0());
-    }, function (v) {
-        return Control_Plus.empty(dictPlus);
-    });
-};
-var alternativeStar = function (dictAlternative) {
-    return new Control_Alternative.Alternative(function () {
-        return applicativeStar(dictAlternative.Applicative0());
-    }, function () {
-        return plusStar(dictAlternative.Plus1());
-    });
-};
-var monadZeroStar = function (dictMonadZero) {
-    return new Control_MonadZero.MonadZero(function () {
-        return alternativeStar(dictMonadZero.Alternative1());
-    }, function () {
-        return monadStar(dictMonadZero.Monad0());
-    });
-};
-var monadPlusStar = function (dictMonadPlus) {
-    return new Control_MonadPlus.MonadPlus(function () {
-        return monadZeroStar(dictMonadPlus.MonadZero0());
-    });
-};
-module.exports = {
-    Star: Star, 
-    newtypeStar: newtypeStar, 
-    semigroupoidStar: semigroupoidStar, 
-    categoryStar: categoryStar, 
-    functorStar: functorStar, 
-    invariantStar: invariantStar, 
-    applyStar: applyStar, 
-    applicativeStar: applicativeStar, 
-    bindStar: bindStar, 
-    monadStar: monadStar, 
-    altStar: altStar, 
-    plusStar: plusStar, 
-    alternativeStar: alternativeStar, 
-    monadZeroStar: monadZeroStar, 
-    monadPlusStar: monadPlusStar, 
-    distributiveStar: distributiveStar, 
-    profunctorStar: profunctorStar, 
-    strongStar: strongStar, 
-    choiceStar: choiceStar, 
-    closedStar: closedStar
-};
-
-},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":86,"../Control.MonadPlus":87,"../Control.MonadZero":88,"../Control.Plus":91,"../Control.Semigroupoid":92,"../Data.Distributive":135,"../Data.Either":136,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.Newtype":209,"../Data.Profunctor":225,"../Data.Profunctor.Choice":218,"../Data.Profunctor.Closed":219,"../Data.Profunctor.Strong":224,"../Data.Tuple":245,"../Prelude":268}],224:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Functor = require("../Data.Functor");
-var Data_Profunctor = require("../Data.Profunctor");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Strong = function (Profunctor0, first, second) {
-    this.Profunctor0 = Profunctor0;
-    this.first = first;
-    this.second = second;
-};
-var strongFn = new Strong(function () {
-    return Data_Profunctor.profunctorFn;
-}, function (a2b) {
-    return function (v) {
-        return new Data_Tuple.Tuple(a2b(v.value0), v.value1);
-    };
-}, Data_Functor.map(Data_Tuple.functorTuple));
-var second = function (dict) {
-    return dict.second;
-};
-var first = function (dict) {
-    return dict.first;
-};
-var splitStrong = function (dictCategory) {
-    return function (dictStrong) {
-        return function (l) {
-            return function (r) {
-                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(first(dictStrong)(l))(second(dictStrong)(r));
-            };
-        };
-    };
-};
-var fanout = function (dictCategory) {
-    return function (dictStrong) {
-        return function (l) {
-            return function (r) {
-                var split = Data_Profunctor.dimap(dictStrong.Profunctor0())(Control_Category.id(Control_Category.categoryFn))(function (a) {
-                    return new Data_Tuple.Tuple(a, a);
-                })(Control_Category.id(dictCategory));
-                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(split)(splitStrong(dictCategory)(dictStrong)(l)(r));
-            };
-        };
-    };
-};
-module.exports = {
-    Strong: Strong, 
-    fanout: fanout, 
-    first: first, 
-    second: second, 
-    splitStrong: splitStrong, 
-    strongFn: strongFn
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Functor":155,"../Data.Profunctor":225,"../Data.Tuple":245,"../Prelude":268}],225:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Newtype = require("../Data.Newtype");
-var Prelude = require("../Prelude");
-var Profunctor = function (dimap) {
-    this.dimap = dimap;
-};
-var profunctorFn = new Profunctor(function (a2b) {
-    return function (c2d) {
-        return function (b2c) {
-            return function ($9) {
-                return c2d(b2c(a2b($9)));
-            };
-        };
-    };
-});
-var dimap = function (dict) {
-    return dict.dimap;
-};
-var lmap = function (dictProfunctor) {
-    return function (a2b) {
-        return dimap(dictProfunctor)(a2b)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var rmap = function (dictProfunctor) {
-    return function (b2c) {
-        return dimap(dictProfunctor)(Control_Category.id(Control_Category.categoryFn))(b2c);
-    };
-};
-var unwrapIso = function (dictProfunctor) {
-    return function (dictNewtype) {
-        return dimap(dictProfunctor)(Data_Newtype.wrap(dictNewtype))(Data_Newtype.unwrap(dictNewtype));
-    };
-};
-var wrapIso = function (dictProfunctor) {
-    return function (dictNewtype) {
-        return function (v) {
-            return dimap(dictProfunctor)(Data_Newtype.unwrap(dictNewtype))(Data_Newtype.wrap(dictNewtype));
-        };
-    };
-};
-var arr = function (dictCategory) {
-    return function (dictProfunctor) {
-        return function (f) {
-            return rmap(dictProfunctor)(f)(Control_Category.id(dictCategory));
-        };
-    };
-};
-module.exports = {
-    Profunctor: Profunctor, 
-    arr: arr, 
-    dimap: dimap, 
-    lmap: lmap, 
-    rmap: rmap, 
-    unwrapIso: unwrapIso, 
-    wrapIso: wrapIso, 
-    profunctorFn: profunctorFn
-};
-
-},{"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Newtype":209,"../Prelude":268}],226:[function(require,module,exports){
-"use strict";
-
-exports.intSub = function (x) {
-  return function (y) {
-    /* jshint bitwise: false */
-    return x - y | 0;
-  };
-};
-
-exports.numSub = function (n1) {
-  return function (n2) {
-    return n1 - n2;
-  };
-};
-
-},{}],227:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Unit = require("../Data.Unit");
-var Ring = function (Semiring0, sub) {
-    this.Semiring0 = Semiring0;
-    this.sub = sub;
-};
-var sub = function (dict) {
-    return dict.sub;
-};
-var ringUnit = new Ring(function () {
-    return Data_Semiring.semiringUnit;
-}, function (v) {
-    return function (v1) {
-        return Data_Unit.unit;
-    };
-});
-var ringNumber = new Ring(function () {
-    return Data_Semiring.semiringNumber;
-}, $foreign.numSub);
-var ringInt = new Ring(function () {
-    return Data_Semiring.semiringInt;
-}, $foreign.intSub);
-var ringFn = function (dictRing) {
-    return new Ring(function () {
-        return Data_Semiring.semiringFn(dictRing.Semiring0());
-    }, function (f) {
-        return function (g) {
-            return function (x) {
-                return sub(dictRing)(f(x))(g(x));
-            };
-        };
-    });
-};
-var negate = function (dictRing) {
-    return function (a) {
-        return sub(dictRing)(Data_Semiring.zero(dictRing.Semiring0()))(a);
-    };
-};
-module.exports = {
-    Ring: Ring, 
-    negate: negate, 
-    sub: sub, 
-    ringInt: ringInt, 
-    ringNumber: ringNumber, 
-    ringUnit: ringUnit, 
-    ringFn: ringFn
-};
-
-},{"../Data.Semiring":231,"../Data.Unit":249,"./foreign":226}],228:[function(require,module,exports){
-"use strict";
-
-exports.concatString = function (s1) {
-  return function (s2) {
-    return s1 + s2;
-  };
-};
-
-exports.concatArray = function (xs) {
-  return function (ys) {
-    if (xs.length === 0) return ys;
-    if (ys.length === 0) return xs;
-    return xs.concat(ys);
-  };
-};
-
-},{}],229:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Unit = require("../Data.Unit");
-var Data_Void = require("../Data.Void");
-var Semigroup = function (append) {
-    this.append = append;
-};
-var semigroupVoid = new Semigroup(function (v) {
-    return Data_Void.absurd;
-});
-var semigroupUnit = new Semigroup(function (v) {
-    return function (v1) {
-        return Data_Unit.unit;
-    };
-});
-var semigroupString = new Semigroup($foreign.concatString);
-var semigroupArray = new Semigroup($foreign.concatArray);
-var append = function (dict) {
-    return dict.append;
-};
-var semigroupFn = function (dictSemigroup) {
-    return new Semigroup(function (f) {
-        return function (g) {
-            return function (x) {
-                return append(dictSemigroup)(f(x))(g(x));
-            };
-        };
-    });
-};
-module.exports = {
-    Semigroup: Semigroup, 
-    append: append, 
-    semigroupString: semigroupString, 
-    semigroupUnit: semigroupUnit, 
-    semigroupVoid: semigroupVoid, 
-    semigroupFn: semigroupFn, 
-    semigroupArray: semigroupArray
-};
-
-},{"../Data.Unit":249,"../Data.Void":250,"./foreign":228}],230:[function(require,module,exports){
-"use strict";
-
-exports.intAdd = function (x) {
-  return function (y) {
-    /* jshint bitwise: false */
-    return x + y | 0;
-  };
-};
-
-exports.intMul = function (x) {
-  return function (y) {
-    /* jshint bitwise: false */
-    return x * y | 0;
-  };
-};
-
-exports.numAdd = function (n1) {
-  return function (n2) {
-    return n1 + n2;
-  };
-};
-
-exports.numMul = function (n1) {
-  return function (n2) {
-    return n1 * n2;
-  };
-};
-
-},{}],231:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Unit = require("../Data.Unit");
-var Semiring = function (add, mul, one, zero) {
-    this.add = add;
-    this.mul = mul;
-    this.one = one;
-    this.zero = zero;
-};
-var zero = function (dict) {
-    return dict.zero;
-};
-var semiringUnit = new Semiring(function (v) {
-    return function (v1) {
-        return Data_Unit.unit;
-    };
-}, function (v) {
-    return function (v1) {
-        return Data_Unit.unit;
-    };
-}, Data_Unit.unit, Data_Unit.unit);
-var semiringNumber = new Semiring($foreign.numAdd, $foreign.numMul, 1.0, 0.0);
-var semiringInt = new Semiring($foreign.intAdd, $foreign.intMul, 1, 0);
-var one = function (dict) {
-    return dict.one;
-};
-var mul = function (dict) {
-    return dict.mul;
-};
-var add = function (dict) {
-    return dict.add;
-};
-var semiringFn = function (dictSemiring) {
-    return new Semiring(function (f) {
-        return function (g) {
-            return function (x) {
-                return add(dictSemiring)(f(x))(g(x));
-            };
-        };
-    }, function (f) {
-        return function (g) {
-            return function (x) {
-                return mul(dictSemiring)(f(x))(g(x));
-            };
-        };
-    }, function (v) {
-        return one(dictSemiring);
-    }, function (v) {
-        return zero(dictSemiring);
-    });
-};
-module.exports = {
-    Semiring: Semiring, 
-    add: add, 
-    mul: mul, 
-    one: one, 
-    zero: zero, 
-    semiringInt: semiringInt, 
-    semiringNumber: semiringNumber, 
-    semiringFn: semiringFn, 
-    semiringUnit: semiringUnit
-};
-
-},{"../Data.Unit":249,"./foreign":230}],232:[function(require,module,exports){
-"use strict";
-
-exports.showIntImpl = function (n) {
-  return n.toString();
-};
-
-exports.showNumberImpl = function (n) {
-  var str = n.toString();
-  return isNaN(str + ".0") ? str : str + ".0";
-};
-
-exports.showCharImpl = function (c) {
-  var code = c.charCodeAt(0);
-  if (code < 0x20 || code === 0x7F) {
-    switch (c) {
-      case "\x07": return "'\\a'";
-      case "\b": return "'\\b'";
-      case "\f": return "'\\f'";
-      case "\n": return "'\\n'";
-      case "\r": return "'\\r'";
-      case "\t": return "'\\t'";
-      case "\v": return "'\\v'";
-    }
-    return "'\\" + code.toString(10) + "'";
-  }
-  return c === "'" || c === "\\" ? "'\\" + c + "'" : "'" + c + "'";
-};
-
-exports.showStringImpl = function (s) {
-  var l = s.length;
-  return "\"" + s.replace(
-    /[\0-\x1F\x7F"\\]/g, // eslint-disable-line no-control-regex
-    function (c, i) {
-      switch (c) {
-        case "\"":
-        case "\\":
-          return "\\" + c;
-        case "\x07": return "\\a";
-        case "\b": return "\\b";
-        case "\f": return "\\f";
-        case "\n": return "\\n";
-        case "\r": return "\\r";
-        case "\t": return "\\t";
-        case "\v": return "\\v";
-      }
-      var k = i + 1;
-      var empty = k < l && s[k] >= "0" && s[k] <= "9" ? "\\&" : "";
-      return "\\" + c.charCodeAt(0).toString(10) + empty;
-    }
-  ) + "\"";
-};
-
-exports.showArrayImpl = function (f) {
-  return function (xs) {
-    var ss = [];
-    for (var i = 0, l = xs.length; i < l; i++) {
-      ss[i] = f(xs[i]);
-    }
-    return "[" + ss.join(",") + "]";
-  };
-};
-
-},{}],233:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Show = function (show) {
-    this.show = show;
-};
-var showString = new Show($foreign.showStringImpl);
-var showNumber = new Show($foreign.showNumberImpl);
-var showInt = new Show($foreign.showIntImpl);
-var showChar = new Show($foreign.showCharImpl);
-var showBoolean = new Show(function (v) {
-    if (v) {
-        return "true";
-    };
-    if (!v) {
-        return "false";
-    };
-    throw new Error("Failed pattern match at Data.Show line 13, column 3 - line 14, column 3: " + [ v.constructor.name ]);
-});
-var show = function (dict) {
-    return dict.show;
-};
-var showArray = function (dictShow) {
-    return new Show($foreign.showArrayImpl(show(dictShow)));
-};
-module.exports = {
-    Show: Show, 
-    show: show, 
-    showBoolean: showBoolean, 
-    showInt: showInt, 
-    showNumber: showNumber, 
-    showChar: showChar, 
-    showString: showString, 
-    showArray: showArray
-};
-
-},{"./foreign":232}],234:[function(require,module,exports){
-"use strict";
-
-exports["new"] = function () {
-  return {};
-};
-
-exports.peekImpl = function (just) {
-  return function (nothing) {
-    return function (m) {
-      return function (k) {
-        return function () {
-          return {}.hasOwnProperty.call(m, k) ? just(m[k]) : nothing;
-        };
-      };
-    };
-  };
-};
-
-exports.poke = function (m) {
-  return function (k) {
-    return function (v) {
-      return function () {
-        m[k] = v;
-        return m;
-      };
-    };
-  };
-};
-
-exports["delete"] = function (m) {
-  return function (k) {
-    return function () {
-      delete m[k];
-      return m;
-    };
-  };
-};
-
-},{}],235:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_ST = require("../Control.Monad.ST");
-var Data_Maybe = require("../Data.Maybe");
-var peek = $foreign.peekImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-module.exports = {
-    peek: peek, 
-    "delete": $foreign["delete"], 
-    "new": $foreign["new"], 
-    poke: $foreign.poke
-};
-
-},{"../Control.Monad.Eff":70,"../Control.Monad.ST":79,"../Data.Maybe":198,"./foreign":234}],236:[function(require,module,exports){
-"use strict";
-
-exports._copyEff = function (m) {
-  return function () {
-    var r = {};
-    for (var k in m) {
-      if (hasOwnProperty.call(m, k)) {
-        r[k] = m[k];
-      }
-    }
-    return r;
-  };
-};
-
-exports.empty = {};
-
-exports.runST = function (f) {
-  return f;
-};
-
-exports._fmapStrMap = function (m0, f) {
-  var m = {};
-  for (var k in m0) {
-    if (hasOwnProperty.call(m0, k)) {
-      m[k] = f(m0[k]);
-    }
-  }
-  return m;
-};
-
-exports._mapWithKey = function (m0, f) {
-  var m = {};
-  for (var k in m0) {
-    if (hasOwnProperty.call(m0, k)) {
-      m[k] = f(k)(m0[k]);
-    }
-  }
-  return m;
-};
-
-exports._foldM = function (bind) {
-  return function (f) {
-    return function (mz) {
-      return function (m) {
-        var acc = mz;
-        function g(k) {
-          return function (z) {
-            return f(z)(k)(m[k]);
-          };
-        }
-        for (var k in m) {
-          if (hasOwnProperty.call(m, k)) {
-            acc = bind(acc)(g(k));
-          }
-        }
-        return acc;
-      };
-    };
-  };
-};
-
-exports._foldSCStrMap = function (m, z, f, fromMaybe) {
-  var acc = z;
-  for (var k in m) {
-    if (hasOwnProperty.call(m, k)) {
-      var maybeR = f(acc)(k)(m[k]);
-      var r = fromMaybe(null)(maybeR);
-      if (r === null) return acc;
-      else acc = r;
-    }
-  }
-  return acc;
-};
-
-exports.all = function (f) {
-  return function (m) {
-    for (var k in m) {
-      if (hasOwnProperty.call(m, k) && !f(k)(m[k])) return false;
-    }
-    return true;
-  };
-};
-
-exports.size = function (m) {
-  var s = 0;
-  for (var k in m) {
-    if (hasOwnProperty.call(m, k)) {
-      ++s;
-    }
-  }
-  return s;
-};
-
-exports._lookup = function (no, yes, k, m) {
-  return k in m ? yes(m[k]) : no;
-};
-
-exports._unsafeDeleteStrMap = function (m, k) {
-  delete m[k];
-  return m;
-};
-
-exports._lookupST = function (no, yes, k, m) {
-  return function () {
-    return k in m ? yes(m[k]) : no;
-  };
-};
-
-function _collect(f) {
-  return function (m) {
-    var r = [];
-    for (var k in m) {
-      if (hasOwnProperty.call(m, k)) {
-        r.push(f(k)(m[k]));
-      }
-    }
-    return r;
-  };
-}
-
-exports._collect = _collect;
-
-exports.keys = Object.keys || _collect(function (k) {
-  return function () { return k; };
-});
-
-},{}],237:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_ST = require("../Control.Monad.ST");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Array = require("../Data.Array");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_StrMap_ST = require("../Data.StrMap.ST");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unfoldable = require("../Data.Unfoldable");
-var Prelude = require("../Prelude");
-var values = $foreign._collect(function (v) {
-    return function (v1) {
-        return v1;
-    };
-});
-var toUnfoldable = function (dictUnfoldable) {
-    return function ($40) {
-        return Data_Array.toUnfoldable(dictUnfoldable)($foreign._collect(Data_Tuple.Tuple.create)($40));
-    };
-};
-var toArray = $foreign._collect(Data_Tuple.Tuple.create);
-var thawST = $foreign._copyEff;
-var showStrMap = function (dictShow) {
-    return new Data_Show.Show(function (m) {
-        return "(fromFoldable " + (Data_Show.show(Data_Show.showArray(Data_Tuple.showTuple(Data_Show.showString)(dictShow)))(toArray(m)) + ")");
-    });
-};
-var pureST = function (f) {
-    return Control_Monad_Eff.runPure($foreign.runST(f));
-};
-var singleton = function (k) {
-    return function (v) {
-        return pureST(function __do() {
-            var v1 = Data_StrMap_ST["new"]();
-            var v2 = Data_StrMap_ST.poke(v1)(k)(v)();
-            return v1;
-        });
-    };
-};
-var mutate = function (f) {
-    return function (m) {
-        return pureST(function __do() {
-            var v = thawST(m)();
-            var v1 = f(v)();
-            return v;
-        });
-    };
-};
-var member = Data_Function_Uncurried.runFn4($foreign._lookup)(false)(Data_Function["const"](true));
-var mapWithKey = function (f) {
-    return function (m) {
-        return $foreign._mapWithKey(m, f);
-    };
-};
-var lookup = Data_Function_Uncurried.runFn4($foreign._lookup)(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
-var isSubmap = function (dictEq) {
-    return function (m1) {
-        return function (m2) {
-            var f = function (k) {
-                return function (v) {
-                    return $foreign._lookup(false, Data_Eq.eq(dictEq)(v), k, m2);
-                };
-            };
-            return $foreign.all(f)(m1);
-        };
-    };
-};
-var isEmpty = $foreign.all(function (v) {
-    return function (v1) {
-        return false;
-    };
-});
-var insert = function (k) {
-    return function (v) {
-        return mutate(function (s) {
-            return Data_Functor["void"](Control_Monad_Eff.functorEff)(Data_StrMap_ST.poke(s)(k)(v));
-        });
-    };
-};
-var functorStrMap = new Data_Functor.Functor(function (f) {
-    return function (m) {
-        return $foreign._fmapStrMap(m, f);
-    };
-});
-var fromFoldableWith = function (dictFoldable) {
-    return function (f) {
-        return function (l) {
-            return pureST(function __do() {
-                var v = Data_StrMap_ST["new"]();
-                Data_Foldable.for_(Control_Monad_Eff.applicativeEff)(dictFoldable)(l)(function (v1) {
-                    return Control_Bind.bind(Control_Monad_Eff.bindEff)($foreign._lookupST(v1.value1, f(v1.value1), v1.value0, v))(Data_StrMap_ST.poke(v)(v1.value0));
-                })();
-                return v;
-            });
-        };
-    };
-};
-var fromFoldable = function (dictFoldable) {
-    return function (l) {
-        return pureST(function __do() {
-            var v = Data_StrMap_ST["new"]();
-            Data_Foldable.for_(Control_Monad_Eff.applicativeEff)(dictFoldable)(l)(function (v1) {
-                return Data_StrMap_ST.poke(v)(v1.value0)(v1.value1);
-            })();
-            return v;
-        });
-    };
-};
-var freezeST = $foreign._copyEff;
-var foldMaybe = function (f) {
-    return function (z) {
-        return function (m) {
-            return $foreign._foldSCStrMap(m, z, f, Data_Maybe.fromMaybe);
-        };
-    };
-};
-var foldM = function (dictMonad) {
-    return function (f) {
-        return function (z) {
-            return $foreign._foldM(Control_Bind.bind(dictMonad.Bind1()))(f)(Control_Applicative.pure(dictMonad.Applicative0())(z));
-        };
-    };
-};
-var semigroupStrMap = function (dictSemigroup) {
-    return new Data_Semigroup.Semigroup(function (m1) {
-        return function (m2) {
-            return mutate(function (s1) {
-                return Data_Functor["void"](Control_Monad_Eff.functorEff)(foldM(Control_Monad_Eff.monadEff)(function (s2) {
-                    return function (k) {
-                        return function (v2) {
-                            return Data_StrMap_ST.poke(s2)(k)($foreign._lookup(v2, function (v1) {
-                                return Data_Semigroup.append(dictSemigroup)(v1)(v2);
-                            }, k, m2));
-                        };
-                    };
-                })(s1)(m1));
-            })(m2);
-        };
-    });
-};
-var monoidStrMap = function (dictSemigroup) {
-    return new Data_Monoid.Monoid(function () {
-        return semigroupStrMap(dictSemigroup);
-    }, $foreign.empty);
-};
-var union = function (m) {
-    return mutate(function (s) {
-        return Data_Functor["void"](Control_Monad_Eff.functorEff)(foldM(Control_Monad_Eff.monadEff)(Data_StrMap_ST.poke)(s)(m));
-    });
-};
-var unions = function (dictFoldable) {
-    return Data_Foldable.foldl(dictFoldable)(union)($foreign.empty);
-};
-var fold = $foreign._foldM(Data_Function.applyFlipped);
-var foldMap = function (dictMonoid) {
-    return function (f) {
-        return fold(function (acc) {
-            return function (k) {
-                return function (v) {
-                    return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f(k)(v));
-                };
-            };
-        })(Data_Monoid.mempty(dictMonoid));
-    };
-};
-var foldableStrMap = new Data_Foldable.Foldable(function (dictMonoid) {
-    return function (f) {
-        return foldMap(dictMonoid)(Data_Function["const"](f));
-    };
-}, function (f) {
-    return fold(function (z) {
-        return function (v) {
-            return f(z);
-        };
-    });
-}, function (f) {
-    return function (z) {
-        return function (m) {
-            return Data_Foldable.foldr(Data_Foldable.foldableArray)(f)(z)(values(m));
-        };
-    };
-});
-var traversableStrMap = new Data_Traversable.Traversable(function () {
-    return foldableStrMap;
-}, function () {
-    return functorStrMap;
-}, function (dictApplicative) {
-    return Data_Traversable.traverse(traversableStrMap)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
-}, function (dictApplicative) {
-    return function (f) {
-        return function (ms) {
-            return Data_Foldable.foldr(Data_Foldable.foldableArray)(function (x) {
-                return function (acc) {
-                    return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(union)(x))(acc);
-                };
-            })(Control_Applicative.pure(dictApplicative)($foreign.empty))(Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Tuple.uncurry(singleton)))(Data_Functor.map(Data_Functor.functorArray)(Data_Traversable.traverse(Data_Tuple.traversableTuple)(dictApplicative)(f))(toArray(ms))));
-        };
-    };
-});
-var eqStrMap = function (dictEq) {
-    return new Data_Eq.Eq(function (m1) {
-        return function (m2) {
-            return isSubmap(dictEq)(m1)(m2) && isSubmap(dictEq)(m2)(m1);
-        };
-    });
-};
-var eq1StrMap = new Data_Eq.Eq1(function (dictEq) {
-    return Data_Eq.eq(eqStrMap(dictEq));
-});
-var $$delete = function (k) {
-    return mutate(function (s) {
-        return Data_Functor["void"](Control_Monad_Eff.functorEff)(Data_StrMap_ST["delete"](s)(k));
-    });
-};
-var pop = function (k) {
-    return function (m) {
-        return Data_Functor.mapFlipped(Data_Maybe.functorMaybe)(lookup(k)(m))(function (a) {
-            return new Data_Tuple.Tuple(a, $$delete(k)(m));
-        });
-    };
-};
-var alter = function (f) {
-    return function (k) {
-        return function (m) {
-            var v = f(lookup(k)(m));
-            if (v instanceof Data_Maybe.Nothing) {
-                return $$delete(k)(m);
-            };
-            if (v instanceof Data_Maybe.Just) {
-                return insert(k)(v.value0)(m);
-            };
-            throw new Error("Failed pattern match at Data.StrMap line 187, column 15 - line 189, column 25: " + [ v.constructor.name ]);
-        };
-    };
-};
-var update = function (f) {
-    return function (k) {
-        return function (m) {
-            return alter(Data_Maybe.maybe(Data_Maybe.Nothing.value)(f))(k)(m);
-        };
-    };
-};
-module.exports = {
-    alter: alter, 
-    "delete": $$delete, 
-    fold: fold, 
-    foldM: foldM, 
-    foldMap: foldMap, 
-    foldMaybe: foldMaybe, 
-    freezeST: freezeST, 
-    fromFoldable: fromFoldable, 
-    fromFoldableWith: fromFoldableWith, 
-    insert: insert, 
-    isEmpty: isEmpty, 
-    isSubmap: isSubmap, 
-    lookup: lookup, 
-    mapWithKey: mapWithKey, 
-    member: member, 
-    pop: pop, 
-    pureST: pureST, 
-    singleton: singleton, 
-    thawST: thawST, 
-    toUnfoldable: toUnfoldable, 
-    union: union, 
-    unions: unions, 
-    update: update, 
-    values: values, 
-    functorStrMap: functorStrMap, 
-    foldableStrMap: foldableStrMap, 
-    traversableStrMap: traversableStrMap, 
-    eqStrMap: eqStrMap, 
-    eq1StrMap: eq1StrMap, 
-    showStrMap: showStrMap, 
-    semigroupStrMap: semigroupStrMap, 
-    monoidStrMap: monoidStrMap, 
-    all: $foreign.all, 
-    empty: $foreign.empty, 
-    keys: $foreign.keys, 
-    runST: $foreign.runST, 
-    size: $foreign.size
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad.Eff":70,"../Control.Monad.ST":79,"../Control.Semigroupoid":92,"../Data.Array":119,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Monoid":207,"../Data.Semigroup":229,"../Data.Show":233,"../Data.StrMap.ST":235,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unfoldable":247,"../Prelude":268,"./foreign":236}],238:[function(require,module,exports){
-"use strict";
-
-exports.charCodeAt = function (i) {
-  return function (s) {
-    if (i >= 0 && i < s.length) return s.charCodeAt(i);
-    throw new Error("Data.String.Unsafe.charCodeAt: Invalid index.");
-  };
-};
-
-exports.charAt = function (i) {
-  return function (s) {
-    if (i >= 0 && i < s.length) return s.charAt(i);
-    throw new Error("Data.String.Unsafe.charAt: Invalid index.");
-  };
-};
-
-exports.char = function (s) {
-  if (s.length === 1) return s.charAt(0);
-  throw new Error("Data.String.Unsafe.char: Expected string of length 1.");
-};
-
-},{}],239:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-module.exports = {
-    "char": $foreign["char"], 
-    charAt: $foreign.charAt, 
-    charCodeAt: $foreign.charCodeAt
-};
-
-},{"./foreign":238}],240:[function(require,module,exports){
-"use strict";
-
-exports._charAt = function (just) {
-  return function (nothing) {
-    return function (i) {
-      return function (s) {
-        return i >= 0 && i < s.length ? just(s.charAt(i)) : nothing;
-      };
-    };
-  };
-};
-
-exports.singleton = function (c) {
-  return c;
-};
-
-exports._charCodeAt = function (just) {
-  return function (nothing) {
-    return function (i) {
-      return function (s) {
-        return i >= 0 && i < s.length ? just(s.charCodeAt(i)) : nothing;
-      };
-    };
-  };
-};
-
-exports._toChar = function (just) {
-  return function (nothing) {
-    return function (s) {
-      return s.length === 1 ? just(s) : nothing;
-    };
-  };
-};
-
-exports.fromCharArray = function (a) {
-  return a.join("");
-};
-
-exports._indexOf = function (just) {
-  return function (nothing) {
-    return function (x) {
-      return function (s) {
-        var i = s.indexOf(x);
-        return i === -1 ? nothing : just(i);
-      };
-    };
-  };
-};
-
-exports["_indexOf'"] = function (just) {
-  return function (nothing) {
-    return function (x) {
-      return function (startAt) {
-        return function (s) {
-          if (startAt < 0 || startAt > s.length) return nothing;
-          var i = s.indexOf(x, startAt);
-          return i === -1 ? nothing : just(i);
-        };
-      };
-    };
-  };
-};
-
-exports._lastIndexOf = function (just) {
-  return function (nothing) {
-    return function (x) {
-      return function (s) {
-        var i = s.lastIndexOf(x);
-        return i === -1 ? nothing : just(i);
-      };
-    };
-  };
-};
-
-exports["_lastIndexOf'"] = function (just) {
-  return function (nothing) {
-    return function (x) {
-      return function (startAt) {
-        return function (s) {
-          if (startAt < 0 || startAt > s.length) return nothing;
-          var i = s.lastIndexOf(x, startAt);
-          return i === -1 ? nothing : just(i);
-        };
-      };
-    };
-  };
-};
-
-exports.length = function (s) {
-  return s.length;
-};
-
-exports._localeCompare = function (lt) {
-  return function (eq) {
-    return function (gt) {
-      return function (s1) {
-        return function (s2) {
-          var result = s1.localeCompare(s2);
-          return result < 0 ? lt : result > 0 ? gt : eq;
-        };
-      };
-    };
-  };
-};
-
-exports.replace = function (s1) {
-  return function (s2) {
-    return function (s3) {
-      return s3.replace(s1, s2);
-    };
-  };
-};
-
-exports.replaceAll = function (s1) {
-  return function (s2) {
-    return function (s3) {
-      return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2);
-    };
-  };
-};
-
-exports.take = function (n) {
-  return function (s) {
-    return s.substr(0, n);
-  };
-};
-
-exports.drop = function (n) {
-  return function (s) {
-    return s.substring(n);
-  };
-};
-
-exports.count = function (p) {
-  return function (s) {
-    var i = 0;
-    while (i < s.length && p(s.charAt(i))) i++;
-    return i;
-  };
-};
-
-exports.split = function (sep) {
-  return function (s) {
-    return s.split(sep);
-  };
-};
-
-exports._splitAt = function (just) {
-  return function (nothing) {
-    return function (i) {
-      return function (s) {
-        return i >= 0 && i < s.length ?
-               just({ before: s.substring(0, i), after: s.substring(i) }) :
-               nothing;
-      };
-    };
-  };
-};
-
-exports.toCharArray = function (s) {
-  return s.split("");
-};
-
-exports.toLower = function (s) {
-  return s.toLowerCase();
-};
-
-exports.toUpper = function (s) {
-  return s.toUpperCase();
-};
-
-exports.trim = function (s) {
-  return s.trim();
-};
-
-exports.joinWith = function (s) {
-  return function (xs) {
-    return xs.join(s);
-  };
-};
-
-},{}],241:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_Function = require("../Data.Function");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_String_Unsafe = require("../Data.String.Unsafe");
-var Prelude = require("../Prelude");
-var Replacement = function (x) {
-    return x;
-};
-var Pattern = function (x) {
-    return x;
-};
-var uncons = function (v) {
-    if (v === "") {
-        return Data_Maybe.Nothing.value;
-    };
-    return new Data_Maybe.Just({
-        head: Data_String_Unsafe.charAt(0)(v), 
-        tail: $foreign.drop(1)(v)
-    });
-};
-var toChar = $foreign._toChar(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var takeWhile = function (p) {
-    return function (s) {
-        return $foreign.take($foreign.count(p)(s))(s);
-    };
-};
-var splitAt = $foreign._splitAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var showReplacement = new Data_Show.Show(function (v) {
-    return "(Replacement " + (v + ")");
-});
-var showPattern = new Data_Show.Show(function (v) {
-    return "(Pattern " + (v + ")");
-});
-var $$null = function (s) {
-    return s === "";
-};
-var newtypeReplacement = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Replacement);
-var newtypePattern = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Pattern);
-var localeCompare = $foreign._localeCompare(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value);
-var lastIndexOf$prime = $foreign["_lastIndexOf'"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var lastIndexOf = $foreign._lastIndexOf(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var stripSuffix = function (v) {
-    return function (str) {
-        var v1 = lastIndexOf(v)(str);
-        if (v1 instanceof Data_Maybe.Just && v1.value0 === ($foreign.length(str) - $foreign.length(v) | 0)) {
-            return Data_Maybe.Just.create($foreign.take(v1.value0)(str));
-        };
-        return Data_Maybe.Nothing.value;
-    };
-};
-var indexOf$prime = $foreign["_indexOf'"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var indexOf = $foreign._indexOf(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var stripPrefix = function (v) {
-    return function (str) {
-        var v1 = indexOf(v)(str);
-        if (v1 instanceof Data_Maybe.Just && v1.value0 === 0) {
-            return Data_Maybe.Just.create($foreign.drop($foreign.length(v))(str));
-        };
-        return Data_Maybe.Nothing.value;
-    };
-};
-var eqReplacement = new Data_Eq.Eq(function (x) {
-    return function (y) {
-        return x === y;
-    };
-});
-var ordReplacement = new Data_Ord.Ord(function () {
-    return eqReplacement;
-}, function (x) {
-    return function (y) {
-        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
-    };
-});
-var eqPattern = new Data_Eq.Eq(function (x) {
-    return function (y) {
-        return x === y;
-    };
-});
-var ordPattern = new Data_Ord.Ord(function () {
-    return eqPattern;
-}, function (x) {
-    return function (y) {
-        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
-    };
-});
-var dropWhile = function (p) {
-    return function (s) {
-        return $foreign.drop($foreign.count(p)(s))(s);
-    };
-};
-var contains = function (pat) {
-    return function ($48) {
-        return Data_Maybe.isJust(indexOf(pat)($48));
-    };
-};
-var charCodeAt = $foreign._charCodeAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-var charAt = $foreign._charAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
-module.exports = {
-    Pattern: Pattern, 
-    Replacement: Replacement, 
-    charAt: charAt, 
-    charCodeAt: charCodeAt, 
-    contains: contains, 
-    dropWhile: dropWhile, 
-    indexOf: indexOf, 
-    "indexOf'": indexOf$prime, 
-    lastIndexOf: lastIndexOf, 
-    "lastIndexOf'": lastIndexOf$prime, 
-    localeCompare: localeCompare, 
-    "null": $$null, 
-    splitAt: splitAt, 
-    stripPrefix: stripPrefix, 
-    stripSuffix: stripSuffix, 
-    takeWhile: takeWhile, 
-    toChar: toChar, 
-    uncons: uncons, 
-    eqPattern: eqPattern, 
-    ordPattern: ordPattern, 
-    newtypePattern: newtypePattern, 
-    showPattern: showPattern, 
-    eqReplacement: eqReplacement, 
-    ordReplacement: ordReplacement, 
-    newtypeReplacement: newtypeReplacement, 
-    showReplacement: showReplacement, 
-    count: $foreign.count, 
-    drop: $foreign.drop, 
-    fromCharArray: $foreign.fromCharArray, 
-    joinWith: $foreign.joinWith, 
-    length: $foreign.length, 
-    replace: $foreign.replace, 
-    replaceAll: $foreign.replaceAll, 
-    singleton: $foreign.singleton, 
-    split: $foreign.split, 
-    take: $foreign.take, 
-    toCharArray: $foreign.toCharArray, 
-    toLower: $foreign.toLower, 
-    toUpper: $foreign.toUpper, 
-    trim: $foreign.trim
-};
-
-},{"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.Function":149,"../Data.Maybe":198,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.String.Unsafe":239,"../Prelude":268,"./foreign":240}],242:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Eq = require("../Data.Eq");
-var Data_EuclideanRing = require("../Data.EuclideanRing");
-var Data_Generic = require("../Data.Generic");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Seconds = function (x) {
-    return x;
-};
-var Minutes = function (x) {
-    return x;
-};
-var Milliseconds = function (x) {
-    return x;
-};
-var Hours = function (x) {
-    return x;
-};
-var Days = function (x) {
-    return x;
-};
-var Duration = function (fromDuration, toDuration) {
-    this.fromDuration = fromDuration;
-    this.toDuration = toDuration;
-};
-var toDuration = function (dict) {
-    return dict.toDuration;
-};
-var showSeconds = new Data_Show.Show(function (v) {
-    return "(Seconds " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
-});
-var showMinutes = new Data_Show.Show(function (v) {
-    return "(Minutes " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
-});
-var showMilliseconds = new Data_Show.Show(function (v) {
-    return "(Milliseconds " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
-});
-var showHours = new Data_Show.Show(function (v) {
-    return "(Hours " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
-});
-var showDays = new Data_Show.Show(function (v) {
-    return "(Days " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
-});
-var semiringSeconds = Data_Semiring.semiringNumber;
-var semiringMinutes = Data_Semiring.semiringNumber;
-var semiringMilliseconds = Data_Semiring.semiringNumber;
-var semiringHours = Data_Semiring.semiringNumber;
-var semiringDays = Data_Semiring.semiringNumber;
-var ringSeconds = Data_Ring.ringNumber;
-var ringMinutes = Data_Ring.ringNumber;
-var ringMilliseconds = Data_Ring.ringNumber;
-var ringHours = Data_Ring.ringNumber;
-var ringDays = Data_Ring.ringNumber;
-var ordSeconds = Data_Ord.ordNumber;
-var ordMinutes = Data_Ord.ordNumber;
-var ordMilliseconds = Data_Ord.ordNumber;
-var ordHours = Data_Ord.ordNumber;
-var ordDays = Data_Ord.ordNumber;
-var newtypeSeconds = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Seconds);
-var newtypeMinutes = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Minutes);
-var newtypeMilliseconds = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Milliseconds);
-var newtypeHours = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Hours);
-var newtypeDays = new Data_Newtype.Newtype(function (n) {
-    return n;
-}, Days);
-var genericSeconds = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Seconds" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Seconds))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.Time.Duration.Seconds", [ {
-        sigConstructor: "Data.Time.Duration.Seconds", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.Time.Duration.Seconds", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
-    } ]);
-});
-var genericMinutes = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Minutes" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Minutes))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.Time.Duration.Minutes", [ {
-        sigConstructor: "Data.Time.Duration.Minutes", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.Time.Duration.Minutes", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
-    } ]);
-});
-var genericMilliseconds = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Milliseconds" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Milliseconds))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.Time.Duration.Milliseconds", [ {
-        sigConstructor: "Data.Time.Duration.Milliseconds", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.Time.Duration.Milliseconds", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
-    } ]);
-});
-var genericHours = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Hours" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Hours))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.Time.Duration.Hours", [ {
-        sigConstructor: "Data.Time.Duration.Hours", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.Time.Duration.Hours", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
-    } ]);
-});
-var genericDays = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Days" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Days))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Data.Time.Duration.Days", [ {
-        sigConstructor: "Data.Time.Duration.Days", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Data.Time.Duration.Days", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
-    } ]);
-});
-var fromDuration = function (dict) {
-    return dict.fromDuration;
-};
-var eqSeconds = Data_Eq.eqNumber;
-var eqMinutes = Data_Eq.eqNumber;
-var eqMilliseconds = Data_Eq.eqNumber;
-var eqHours = Data_Eq.eqNumber;
-var eqDays = Data_Eq.eqNumber;
-var durationSeconds = new Duration(Data_Newtype.over(newtypeSeconds)(newtypeMilliseconds)(Seconds)(function (v) {
-    return v * 1000.0;
-}), Data_Newtype.over(newtypeMilliseconds)(newtypeSeconds)(Milliseconds)(function (v) {
-    return v / 1000.0;
-}));
-var durationMinutes = new Duration(Data_Newtype.over(newtypeMinutes)(newtypeMilliseconds)(Minutes)(function (v) {
-    return v * 60000.0;
-}), Data_Newtype.over(newtypeMilliseconds)(newtypeMinutes)(Milliseconds)(function (v) {
-    return v / 60000.0;
-}));
-var durationMilliseconds = new Duration(Control_Category.id(Control_Category.categoryFn), Control_Category.id(Control_Category.categoryFn));
-var durationHours = new Duration(Data_Newtype.over(newtypeHours)(newtypeMilliseconds)(Hours)(function (v) {
-    return v * 3600000.0;
-}), Data_Newtype.over(newtypeMilliseconds)(newtypeHours)(Milliseconds)(function (v) {
-    return v / 3600000.0;
-}));
-var durationDays = new Duration(Data_Newtype.over(newtypeDays)(newtypeMilliseconds)(Days)(function (v) {
-    return v * 8.64e7;
-}), Data_Newtype.over(newtypeMilliseconds)(newtypeDays)(Milliseconds)(function (v) {
-    return v / 8.64e7;
-}));
-var convertDuration = function (dictDuration) {
-    return function (dictDuration1) {
-        return function ($80) {
-            return toDuration(dictDuration1)(fromDuration(dictDuration)($80));
-        };
-    };
-};
-module.exports = {
-    Days: Days, 
-    Hours: Hours, 
-    Milliseconds: Milliseconds, 
-    Minutes: Minutes, 
-    Seconds: Seconds, 
-    Duration: Duration, 
-    convertDuration: convertDuration, 
-    fromDuration: fromDuration, 
-    toDuration: toDuration, 
-    newtypeMilliseconds: newtypeMilliseconds, 
-    genericMilliseconds: genericMilliseconds, 
-    eqMilliseconds: eqMilliseconds, 
-    ordMilliseconds: ordMilliseconds, 
-    semiringMilliseconds: semiringMilliseconds, 
-    ringMilliseconds: ringMilliseconds, 
-    showMilliseconds: showMilliseconds, 
-    newtypeSeconds: newtypeSeconds, 
-    genericSeconds: genericSeconds, 
-    eqSeconds: eqSeconds, 
-    ordSeconds: ordSeconds, 
-    semiringSeconds: semiringSeconds, 
-    ringSeconds: ringSeconds, 
-    showSeconds: showSeconds, 
-    newtypeMinutes: newtypeMinutes, 
-    genericMinutes: genericMinutes, 
-    eqMinutes: eqMinutes, 
-    ordMinutes: ordMinutes, 
-    semiringMinutes: semiringMinutes, 
-    ringMinutes: ringMinutes, 
-    showMinutes: showMinutes, 
-    newtypeHours: newtypeHours, 
-    genericHours: genericHours, 
-    eqHours: eqHours, 
-    ordHours: ordHours, 
-    semiringHours: semiringHours, 
-    ringHours: ringHours, 
-    showHours: showHours, 
-    newtypeDays: newtypeDays, 
-    genericDays: genericDays, 
-    eqDays: eqDays, 
-    ordDays: ordDays, 
-    semiringDays: semiringDays, 
-    ringDays: ringDays, 
-    showDays: showDays, 
-    durationMilliseconds: durationMilliseconds, 
-    durationSeconds: durationSeconds, 
-    durationMinutes: durationMinutes, 
-    durationHours: durationHours, 
-    durationDays: durationDays
-};
-
-},{"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":92,"../Data.Eq":138,"../Data.EuclideanRing":140,"../Data.Generic":157,"../Data.Maybe":198,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.Unit":249,"../Prelude":268}],243:[function(require,module,exports){
-"use strict";
-
-// jshint maxparams: 3
-
-exports.traverseArrayImpl = function () {
-  function Cont(fn) {
-    this.fn = fn;
-  }
-
-  var emptyList = {};
-
-  var ConsCell = function (head, tail) {
-    this.head = head;
-    this.tail = tail;
-  };
-
-  function consList(x) {
-    return function (xs) {
-      return new ConsCell(x, xs);
-    };
-  }
-
-  function listToArray(list) {
-    var arr = [];
-    var xs = list;
-    while (xs !== emptyList) {
-      arr.push(xs.head);
-      xs = xs.tail;
-    }
-    return arr;
-  }
-
-  return function (apply) {
-    return function (map) {
-      return function (pure) {
-        return function (f) {
-          var buildFrom = function (x, ys) {
-            return apply(map(consList)(f(x)))(ys);
-          };
-
-          var go = function (acc, currentLen, xs) {
-            if (currentLen === 0) {
-              return acc;
-            } else {
-              var last = xs[currentLen - 1];
-              return new Cont(function () {
-                return go(buildFrom(last, acc), currentLen - 1, xs);
-              });
-            }
-          };
-
-          return function (array) {
-            var result = go(pure(emptyList), array.length, array);
-            while (result instanceof Cont) {
-              result = result.fn();
-            }
-
-            return map(listToArray)(result);
-          };
-        };
-      };
-    };
-  };
-}();
-
-},{}],244:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Category = require("../Control.Category");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Functor = require("../Data.Functor");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Maybe_First = require("../Data.Maybe.First");
-var Data_Maybe_Last = require("../Data.Maybe.Last");
-var Data_Monoid_Additive = require("../Data.Monoid.Additive");
-var Data_Monoid_Conj = require("../Data.Monoid.Conj");
-var Data_Monoid_Disj = require("../Data.Monoid.Disj");
-var Data_Monoid_Dual = require("../Data.Monoid.Dual");
-var Data_Monoid_Multiplicative = require("../Data.Monoid.Multiplicative");
-var Prelude = require("../Prelude");
-var StateL = function (x) {
-    return x;
-};
-var StateR = function (x) {
-    return x;
-};
-var Traversable = function (Foldable1, Functor0, sequence, traverse) {
-    this.Foldable1 = Foldable1;
-    this.Functor0 = Functor0;
-    this.sequence = sequence;
-    this.traverse = traverse;
-};
-var traverse = function (dict) {
-    return dict.traverse;
-};
-var traversableMultiplicative = new Traversable(function () {
-    return Data_Foldable.foldableMultiplicative;
-}, function () {
-    return Data_Monoid_Multiplicative.functorMultiplicative;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Multiplicative.Multiplicative)(v);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Multiplicative.Multiplicative)(f(v));
-        };
-    };
-});
-var traversableMaybe = new Traversable(function () {
-    return Data_Foldable.foldableMaybe;
-}, function () {
-    return Data_Maybe.functorMaybe;
-}, function (dictApplicative) {
-    return function (v) {
-        if (v instanceof Data_Maybe.Nothing) {
-            return Control_Applicative.pure(dictApplicative)(Data_Maybe.Nothing.value);
-        };
-        if (v instanceof Data_Maybe.Just) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe.Just.create)(v.value0);
-        };
-        throw new Error("Failed pattern match at Data.Traversable line 87, column 3 - line 87, column 35: " + [ v.constructor.name ]);
-    };
-}, function (dictApplicative) {
-    return function (v) {
-        return function (v1) {
-            if (v1 instanceof Data_Maybe.Nothing) {
-                return Control_Applicative.pure(dictApplicative)(Data_Maybe.Nothing.value);
-            };
-            if (v1 instanceof Data_Maybe.Just) {
-                return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe.Just.create)(v(v1.value0));
-            };
-            throw new Error("Failed pattern match at Data.Traversable line 85, column 3 - line 85, column 37: " + [ v.constructor.name, v1.constructor.name ]);
-        };
-    };
-});
-var traversableDual = new Traversable(function () {
-    return Data_Foldable.foldableDual;
-}, function () {
-    return Data_Monoid_Dual.functorDual;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Dual.Dual)(v);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Dual.Dual)(f(v));
-        };
-    };
-});
-var traversableDisj = new Traversable(function () {
-    return Data_Foldable.foldableDisj;
-}, function () {
-    return Data_Monoid_Disj.functorDisj;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Disj.Disj)(v);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Disj.Disj)(f(v));
-        };
-    };
-});
-var traversableConj = new Traversable(function () {
-    return Data_Foldable.foldableConj;
-}, function () {
-    return Data_Monoid_Conj.functorConj;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Conj.Conj)(v);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Conj.Conj)(f(v));
-        };
-    };
-});
-var traversableAdditive = new Traversable(function () {
-    return Data_Foldable.foldableAdditive;
-}, function () {
-    return Data_Monoid_Additive.functorAdditive;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Additive.Additive)(v);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Additive.Additive)(f(v));
-        };
-    };
-});
-var stateR = function (v) {
-    return v;
-};
-var stateL = function (v) {
-    return v;
-};
-var sequenceDefault = function (dictTraversable) {
-    return function (dictApplicative) {
-        return traverse(dictTraversable)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
-    };
-};
-var traversableArray = new Traversable(function () {
-    return Data_Foldable.foldableArray;
-}, function () {
-    return Data_Functor.functorArray;
-}, function (dictApplicative) {
-    return sequenceDefault(traversableArray)(dictApplicative);
-}, function (dictApplicative) {
-    return $foreign.traverseArrayImpl(Control_Apply.apply(dictApplicative.Apply0()))(Data_Functor.map((dictApplicative.Apply0()).Functor0()))(Control_Applicative.pure(dictApplicative));
-});
-var sequence = function (dict) {
-    return dict.sequence;
-};
-var traversableFirst = new Traversable(function () {
-    return Data_Foldable.foldableFirst;
-}, function () {
-    return Data_Maybe_First.functorFirst;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_First.First)(sequence(traversableMaybe)(dictApplicative)(v));
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_First.First)(traverse(traversableMaybe)(dictApplicative)(f)(v));
-        };
-    };
-});
-var traversableLast = new Traversable(function () {
-    return Data_Foldable.foldableLast;
-}, function () {
-    return Data_Maybe_Last.functorLast;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_Last.Last)(sequence(traversableMaybe)(dictApplicative)(v));
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_Last.Last)(traverse(traversableMaybe)(dictApplicative)(f)(v));
-        };
-    };
-});
-var traverseDefault = function (dictTraversable) {
-    return function (dictApplicative) {
-        return function (f) {
-            return function (ta) {
-                return sequence(dictTraversable)(dictApplicative)(Data_Functor.map(dictTraversable.Functor0())(f)(ta));
-            };
-        };
-    };
-};
-var functorStateR = new Data_Functor.Functor(function (f) {
-    return function (k) {
-        return function (s) {
-            var v = stateR(k)(s);
-            return {
-                accum: v.accum, 
-                value: f(v.value)
-            };
-        };
-    };
-});
-var functorStateL = new Data_Functor.Functor(function (f) {
-    return function (k) {
-        return function (s) {
-            var v = stateL(k)(s);
-            return {
-                accum: v.accum, 
-                value: f(v.value)
-            };
-        };
-    };
-});
-var $$for = function (dictApplicative) {
-    return function (dictTraversable) {
-        return function (x) {
-            return function (f) {
-                return traverse(dictTraversable)(dictApplicative)(f)(x);
-            };
-        };
-    };
-};
-var applyStateR = new Control_Apply.Apply(function () {
-    return functorStateR;
-}, function (f) {
-    return function (x) {
-        return function (s) {
-            var v = stateR(x)(s);
-            var v1 = stateR(f)(v.accum);
-            return {
-                accum: v1.accum, 
-                value: v1.value(v.value)
-            };
-        };
-    };
-});
-var applyStateL = new Control_Apply.Apply(function () {
-    return functorStateL;
-}, function (f) {
-    return function (x) {
-        return function (s) {
-            var v = stateL(f)(s);
-            var v1 = stateL(x)(v.accum);
-            return {
-                accum: v1.accum, 
-                value: v.value(v1.value)
-            };
-        };
-    };
-});
-var applicativeStateR = new Control_Applicative.Applicative(function () {
-    return applyStateR;
-}, function (a) {
-    return function (s) {
-        return {
-            accum: s, 
-            value: a
-        };
-    };
-});
-var mapAccumR = function (dictTraversable) {
-    return function (f) {
-        return function (s0) {
-            return function (xs) {
-                return stateR(traverse(dictTraversable)(applicativeStateR)(function (a) {
-                    return function (s) {
-                        return f(s)(a);
-                    };
-                })(xs))(s0);
-            };
-        };
-    };
-};
-var scanr = function (dictTraversable) {
-    return function (f) {
-        return function (b0) {
-            return function (xs) {
-                return (mapAccumR(dictTraversable)(function (b) {
-                    return function (a) {
-                        var b$prime = f(a)(b);
-                        return {
-                            accum: b$prime, 
-                            value: b$prime
-                        };
-                    };
-                })(b0)(xs)).value;
-            };
-        };
-    };
-};
-var applicativeStateL = new Control_Applicative.Applicative(function () {
-    return applyStateL;
-}, function (a) {
-    return function (s) {
-        return {
-            accum: s, 
-            value: a
-        };
-    };
-});
-var mapAccumL = function (dictTraversable) {
-    return function (f) {
-        return function (s0) {
-            return function (xs) {
-                return stateL(traverse(dictTraversable)(applicativeStateL)(function (a) {
-                    return function (s) {
-                        return f(s)(a);
-                    };
-                })(xs))(s0);
-            };
-        };
-    };
-};
-var scanl = function (dictTraversable) {
-    return function (f) {
-        return function (b0) {
-            return function (xs) {
-                return (mapAccumL(dictTraversable)(function (b) {
-                    return function (a) {
-                        var b$prime = f(b)(a);
-                        return {
-                            accum: b$prime, 
-                            value: b$prime
-                        };
-                    };
-                })(b0)(xs)).value;
-            };
-        };
-    };
-};
-module.exports = {
-    Traversable: Traversable, 
-    "for": $$for, 
-    mapAccumL: mapAccumL, 
-    mapAccumR: mapAccumR, 
-    scanl: scanl, 
-    scanr: scanr, 
-    sequence: sequence, 
-    sequenceDefault: sequenceDefault, 
-    traverse: traverse, 
-    traverseDefault: traverseDefault, 
-    traversableArray: traversableArray, 
-    traversableMaybe: traversableMaybe, 
-    traversableFirst: traversableFirst, 
-    traversableLast: traversableLast, 
-    traversableAdditive: traversableAdditive, 
-    traversableDual: traversableDual, 
-    traversableConj: traversableConj, 
-    traversableDisj: traversableDisj, 
-    traversableMultiplicative: traversableMultiplicative
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Data.Foldable":143,"../Data.Functor":155,"../Data.Maybe":198,"../Data.Maybe.First":196,"../Data.Maybe.Last":197,"../Data.Monoid.Additive":201,"../Data.Monoid.Conj":202,"../Data.Monoid.Disj":203,"../Data.Monoid.Dual":204,"../Data.Monoid.Multiplicative":206,"../Prelude":268,"./foreign":243}],245:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Biapplicative = require("../Control.Biapplicative");
-var Control_Biapply = require("../Control.Biapply");
-var Control_Bind = require("../Control.Bind");
-var Control_Comonad = require("../Control.Comonad");
-var Control_Extend = require("../Control.Extend");
-var Control_Lazy = require("../Control.Lazy");
-var Control_Monad = require("../Control.Monad");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Bifoldable = require("../Data.Bifoldable");
-var Data_Bifunctor = require("../Data.Bifunctor");
-var Data_Bitraversable = require("../Data.Bitraversable");
-var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
-var Data_Bounded = require("../Data.Bounded");
-var Data_CommutativeRing = require("../Data.CommutativeRing");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Functor_Invariant = require("../Data.Functor.Invariant");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Maybe_First = require("../Data.Maybe.First");
-var Data_Monoid = require("../Data.Monoid");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Tuple = (function () {
-    function Tuple(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    Tuple.create = function (value0) {
-        return function (value1) {
-            return new Tuple(value0, value1);
-        };
-    };
-    return Tuple;
-})();
-var uncurry = function (f) {
-    return function (v) {
-        return f(v.value0)(v.value1);
-    };
-};
-var swap = function (v) {
-    return new Tuple(v.value1, v.value0);
-};
-var snd = function (v) {
-    return v.value1;
-};
-var showTuple = function (dictShow) {
-    return function (dictShow1) {
-        return new Data_Show.Show(function (v) {
-            return "(Tuple " + (Data_Show.show(dictShow)(v.value0) + (" " + (Data_Show.show(dictShow1)(v.value1) + ")")));
-        });
-    };
-};
-var semiringTuple = function (dictSemiring) {
-    return function (dictSemiring1) {
-        return new Data_Semiring.Semiring(function (v) {
-            return function (v1) {
-                return new Tuple(Data_Semiring.add(dictSemiring)(v.value0)(v1.value0), Data_Semiring.add(dictSemiring1)(v.value1)(v1.value1));
-            };
-        }, function (v) {
-            return function (v1) {
-                return new Tuple(Data_Semiring.mul(dictSemiring)(v.value0)(v1.value0), Data_Semiring.mul(dictSemiring1)(v.value1)(v1.value1));
-            };
-        }, new Tuple(Data_Semiring.one(dictSemiring), Data_Semiring.one(dictSemiring1)), new Tuple(Data_Semiring.zero(dictSemiring), Data_Semiring.zero(dictSemiring1)));
-    };
-};
-var semigroupoidTuple = new Control_Semigroupoid.Semigroupoid(function (v) {
-    return function (v1) {
-        return new Tuple(v1.value0, v.value1);
-    };
-});
-var semigroupTuple = function (dictSemigroup) {
-    return function (dictSemigroup1) {
-        return new Data_Semigroup.Semigroup(function (v) {
-            return function (v1) {
-                return new Tuple(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0), Data_Semigroup.append(dictSemigroup1)(v.value1)(v1.value1));
-            };
-        });
-    };
-};
-var ringTuple = function (dictRing) {
-    return function (dictRing1) {
-        return new Data_Ring.Ring(function () {
-            return semiringTuple(dictRing.Semiring0())(dictRing1.Semiring0());
-        }, function (v) {
-            return function (v1) {
-                return new Tuple(Data_Ring.sub(dictRing)(v.value0)(v1.value0), Data_Ring.sub(dictRing1)(v.value1)(v1.value1));
-            };
-        });
-    };
-};
-var monoidTuple = function (dictMonoid) {
-    return function (dictMonoid1) {
-        return new Data_Monoid.Monoid(function () {
-            return semigroupTuple(dictMonoid.Semigroup0())(dictMonoid1.Semigroup0());
-        }, new Tuple(Data_Monoid.mempty(dictMonoid), Data_Monoid.mempty(dictMonoid1)));
-    };
-};
-var lookup = function (dictFoldable) {
-    return function (dictEq) {
-        return function (a) {
-            return function ($261) {
-                return Data_Newtype.unwrap(Data_Maybe_First.newtypeFirst)(Data_Foldable.foldMap(dictFoldable)(Data_Maybe_First.monoidFirst)(function (v) {
-                    var $143 = Data_Eq.eq(dictEq)(a)(v.value0);
-                    if ($143) {
-                        return new Data_Maybe.Just(v.value1);
-                    };
-                    return Data_Maybe.Nothing.value;
-                })($261));
-            };
-        };
-    };
-};
-var heytingAlgebraTuple = function (dictHeytingAlgebra) {
-    return function (dictHeytingAlgebra1) {
-        return new Data_HeytingAlgebra.HeytingAlgebra(function (v) {
-            return function (v1) {
-                return new Tuple(Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v.value0)(v1.value0), Data_HeytingAlgebra.conj(dictHeytingAlgebra1)(v.value1)(v1.value1));
-            };
-        }, function (v) {
-            return function (v1) {
-                return new Tuple(Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v.value0)(v1.value0), Data_HeytingAlgebra.disj(dictHeytingAlgebra1)(v.value1)(v1.value1));
-            };
-        }, new Tuple(Data_HeytingAlgebra.ff(dictHeytingAlgebra), Data_HeytingAlgebra.ff(dictHeytingAlgebra1)), function (v) {
-            return function (v1) {
-                return new Tuple(Data_HeytingAlgebra.implies(dictHeytingAlgebra)(v.value0)(v1.value0), Data_HeytingAlgebra.implies(dictHeytingAlgebra1)(v.value1)(v1.value1));
-            };
-        }, function (v) {
-            return new Tuple(Data_HeytingAlgebra.not(dictHeytingAlgebra)(v.value0), Data_HeytingAlgebra.not(dictHeytingAlgebra1)(v.value1));
-        }, new Tuple(Data_HeytingAlgebra.tt(dictHeytingAlgebra), Data_HeytingAlgebra.tt(dictHeytingAlgebra1)));
-    };
-};
-var functorTuple = new Data_Functor.Functor(function (f) {
-    return function (v) {
-        return new Tuple(v.value0, f(v.value1));
-    };
-});
-var invariantTuple = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorTuple));
-var fst = function (v) {
-    return v.value0;
-};
-var lazyTuple = function (dictLazy) {
-    return function (dictLazy1) {
-        return new Control_Lazy.Lazy(function (f) {
-            return new Tuple(Control_Lazy.defer(dictLazy)(function (v) {
-                return fst(f(Data_Unit.unit));
-            }), Control_Lazy.defer(dictLazy1)(function (v) {
-                return snd(f(Data_Unit.unit));
-            }));
-        });
-    };
-};
-var foldableTuple = new Data_Foldable.Foldable(function (dictMonoid) {
-    return function (f) {
-        return function (v) {
-            return f(v.value1);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(z)(v.value1);
-        };
-    };
-}, function (f) {
-    return function (z) {
-        return function (v) {
-            return f(v.value1)(z);
-        };
-    };
-});
-var traversableTuple = new Data_Traversable.Traversable(function () {
-    return foldableTuple;
-}, function () {
-    return functorTuple;
-}, function (dictApplicative) {
-    return function (v) {
-        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create(v.value0))(v.value1);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (v) {
-            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create(v.value0))(f(v.value1));
-        };
-    };
-});
-var extendTuple = new Control_Extend.Extend(function () {
-    return functorTuple;
-}, function (f) {
-    return function (v) {
-        return new Tuple(v.value0, f(v));
-    };
-});
-var eqTuple = function (dictEq) {
-    return function (dictEq1) {
-        return new Data_Eq.Eq(function (x) {
-            return function (y) {
-                return Data_Eq.eq(dictEq)(x.value0)(y.value0) && Data_Eq.eq(dictEq1)(x.value1)(y.value1);
-            };
-        });
-    };
-};
-var ordTuple = function (dictOrd) {
-    return function (dictOrd1) {
-        return new Data_Ord.Ord(function () {
-            return eqTuple(dictOrd.Eq0())(dictOrd1.Eq0());
-        }, function (x) {
-            return function (y) {
-                var v = Data_Ord.compare(dictOrd)(x.value0)(y.value0);
-                if (v instanceof Data_Ordering.LT) {
-                    return Data_Ordering.LT.value;
-                };
-                if (v instanceof Data_Ordering.GT) {
-                    return Data_Ordering.GT.value;
-                };
-                return Data_Ord.compare(dictOrd1)(x.value1)(y.value1);
-            };
-        });
-    };
-};
-var eq1Tuple = function (dictEq) {
-    return new Data_Eq.Eq1(function (dictEq1) {
-        return Data_Eq.eq(eqTuple(dictEq)(dictEq1));
-    });
-};
-var ord1Tuple = function (dictOrd) {
-    return new Data_Ord.Ord1(function () {
-        return eq1Tuple(dictOrd.Eq0());
-    }, function (dictOrd1) {
-        return Data_Ord.compare(ordTuple(dictOrd)(dictOrd1));
-    });
-};
-var curry = function (f) {
-    return function (a) {
-        return function (b) {
-            return f(new Tuple(a, b));
-        };
-    };
-};
-var comonadTuple = new Control_Comonad.Comonad(function () {
-    return extendTuple;
-}, snd);
-var commutativeRingTuple = function (dictCommutativeRing) {
-    return function (dictCommutativeRing1) {
-        return new Data_CommutativeRing.CommutativeRing(function () {
-            return ringTuple(dictCommutativeRing.Ring0())(dictCommutativeRing1.Ring0());
-        });
-    };
-};
-var boundedTuple = function (dictBounded) {
-    return function (dictBounded1) {
-        return new Data_Bounded.Bounded(function () {
-            return ordTuple(dictBounded.Ord0())(dictBounded1.Ord0());
-        }, new Tuple(Data_Bounded.bottom(dictBounded), Data_Bounded.bottom(dictBounded1)), new Tuple(Data_Bounded.top(dictBounded), Data_Bounded.top(dictBounded1)));
-    };
-};
-var booleanAlgebraTuple = function (dictBooleanAlgebra) {
-    return function (dictBooleanAlgebra1) {
-        return new Data_BooleanAlgebra.BooleanAlgebra(function () {
-            return heytingAlgebraTuple(dictBooleanAlgebra.HeytingAlgebra0())(dictBooleanAlgebra1.HeytingAlgebra0());
-        });
-    };
-};
-var bifunctorTuple = new Data_Bifunctor.Bifunctor(function (f) {
-    return function (g) {
-        return function (v) {
-            return new Tuple(f(v.value0), g(v.value1));
-        };
-    };
-});
-var bifoldableTuple = new Data_Bifoldable.Bifoldable(function (dictMonoid) {
-    return function (f) {
-        return function (g) {
-            return function (v) {
-                return Data_Semigroup.append(dictMonoid.Semigroup0())(f(v.value0))(g(v.value1));
-            };
-        };
-    };
-}, function (f) {
-    return function (g) {
-        return function (z) {
-            return function (v) {
-                return g(f(z)(v.value0))(v.value1);
-            };
-        };
-    };
-}, function (f) {
-    return function (g) {
-        return function (z) {
-            return function (v) {
-                return f(v.value0)(g(v.value1)(z));
-            };
-        };
-    };
-});
-var bitraversableTuple = new Data_Bitraversable.Bitraversable(function () {
-    return bifoldableTuple;
-}, function () {
-    return bifunctorTuple;
-}, function (dictApplicative) {
-    return function (v) {
-        return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create)(v.value0))(v.value1);
-    };
-}, function (dictApplicative) {
-    return function (f) {
-        return function (g) {
-            return function (v) {
-                return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create)(f(v.value0)))(g(v.value1));
-            };
-        };
-    };
-});
-var biapplyTuple = new Control_Biapply.Biapply(function () {
-    return bifunctorTuple;
-}, function (v) {
-    return function (v1) {
-        return new Tuple(v.value0(v1.value0), v.value1(v1.value1));
-    };
-});
-var biapplicativeTuple = new Control_Biapplicative.Biapplicative(function () {
-    return biapplyTuple;
-}, Tuple.create);
-var applyTuple = function (dictSemigroup) {
-    return new Control_Apply.Apply(function () {
-        return functorTuple;
-    }, function (v) {
-        return function (v1) {
-            return new Tuple(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0), v.value1(v1.value1));
-        };
-    });
-};
-var bindTuple = function (dictSemigroup) {
-    return new Control_Bind.Bind(function () {
-        return applyTuple(dictSemigroup);
-    }, function (v) {
-        return function (f) {
-            var v1 = f(v.value1);
-            return new Tuple(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0), v1.value1);
-        };
-    });
-};
-var applicativeTuple = function (dictMonoid) {
-    return new Control_Applicative.Applicative(function () {
-        return applyTuple(dictMonoid.Semigroup0());
-    }, Tuple.create(Data_Monoid.mempty(dictMonoid)));
-};
-var monadTuple = function (dictMonoid) {
-    return new Control_Monad.Monad(function () {
-        return applicativeTuple(dictMonoid);
-    }, function () {
-        return bindTuple(dictMonoid.Semigroup0());
-    });
-};
-module.exports = {
-    Tuple: Tuple, 
-    curry: curry, 
-    fst: fst, 
-    lookup: lookup, 
-    snd: snd, 
-    swap: swap, 
-    uncurry: uncurry, 
-    showTuple: showTuple, 
-    eqTuple: eqTuple, 
-    eq1Tuple: eq1Tuple, 
-    ordTuple: ordTuple, 
-    ord1Tuple: ord1Tuple, 
-    boundedTuple: boundedTuple, 
-    semigroupoidTuple: semigroupoidTuple, 
-    semigroupTuple: semigroupTuple, 
-    monoidTuple: monoidTuple, 
-    semiringTuple: semiringTuple, 
-    ringTuple: ringTuple, 
-    commutativeRingTuple: commutativeRingTuple, 
-    heytingAlgebraTuple: heytingAlgebraTuple, 
-    booleanAlgebraTuple: booleanAlgebraTuple, 
-    functorTuple: functorTuple, 
-    invariantTuple: invariantTuple, 
-    bifunctorTuple: bifunctorTuple, 
-    applyTuple: applyTuple, 
-    biapplyTuple: biapplyTuple, 
-    applicativeTuple: applicativeTuple, 
-    biapplicativeTuple: biapplicativeTuple, 
-    bindTuple: bindTuple, 
-    monadTuple: monadTuple, 
-    extendTuple: extendTuple, 
-    comonadTuple: comonadTuple, 
-    lazyTuple: lazyTuple, 
-    foldableTuple: foldableTuple, 
-    bifoldableTuple: bifoldableTuple, 
-    traversableTuple: traversableTuple, 
-    bitraversableTuple: bitraversableTuple
-};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Biapplicative":43,"../Control.Biapply":44,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":49,"../Control.Lazy":50,"../Control.Monad":86,"../Control.Semigroupoid":92,"../Data.Bifoldable":121,"../Data.Bifunctor":127,"../Data.Bitraversable":128,"../Data.BooleanAlgebra":130,"../Data.Bounded":132,"../Data.CommutativeRing":133,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Function":149,"../Data.Functor":155,"../Data.Functor.Invariant":153,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Maybe.First":196,"../Data.Monoid":207,"../Data.Newtype":209,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.Traversable":244,"../Data.Unit":249,"../Prelude":268}],246:[function(require,module,exports){
-"use strict";
-
-exports.unfoldrArrayImpl = function (isNothing) {
-  return function (fromJust) {
-    return function (fst) {
-      return function (snd) {
-        return function (f) {
-          return function (b) {
-            var result = [];
-            var value = b;
-            while (true) { // eslint-disable-line no-constant-condition
-              var maybe = f(value);
-              if (isNothing(maybe)) return result;
-              var tuple = fromJust(maybe);
-              result.push(fst(tuple));
-              value = snd(tuple);
-            }
-          };
-        };
-      };
-    };
-  };
-};
-
-},{}],247:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Ord = require("../Data.Ord");
-var Data_Ring = require("../Data.Ring");
-var Data_Traversable = require("../Data.Traversable");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Partial_Unsafe = require("../Partial.Unsafe");
-var Prelude = require("../Prelude");
-var Unfoldable = function (unfoldr) {
-    this.unfoldr = unfoldr;
-};
-var unfoldr = function (dict) {
-    return dict.unfoldr;
-};
-var unfoldableArray = new Unfoldable($foreign.unfoldrArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
-var replicate = function (dictUnfoldable) {
-    return function (n) {
-        return function (v) {
-            var step = function (i) {
-                var $8 = i <= 0;
-                if ($8) {
-                    return Data_Maybe.Nothing.value;
-                };
-                return new Data_Maybe.Just(new Data_Tuple.Tuple(v, i - 1 | 0));
-            };
-            return unfoldr(dictUnfoldable)(step)(n);
-        };
-    };
-};
-var replicateA = function (dictApplicative) {
-    return function (dictUnfoldable) {
-        return function (dictTraversable) {
-            return function (n) {
-                return function (m) {
-                    return Data_Traversable.sequence(dictTraversable)(dictApplicative)(replicate(dictUnfoldable)(n)(m));
-                };
-            };
-        };
-    };
-};
-var singleton = function (dictUnfoldable) {
-    return replicate(dictUnfoldable)(1);
-};
-var none = function (dictUnfoldable) {
-    return unfoldr(dictUnfoldable)(Data_Function["const"](Data_Maybe.Nothing.value))(Data_Unit.unit);
-};
-var fromMaybe = function (dictUnfoldable) {
-    return unfoldr(dictUnfoldable)(function (b) {
-        return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Function.flip(Data_Tuple.Tuple.create)(Data_Maybe.Nothing.value))(b);
-    });
-};
-module.exports = {
-    Unfoldable: Unfoldable, 
-    fromMaybe: fromMaybe, 
-    none: none, 
-    replicate: replicate, 
-    replicateA: replicateA, 
-    singleton: singleton, 
-    unfoldr: unfoldr, 
-    unfoldableArray: unfoldableArray
-};
-
-},{"../Data.Function":149,"../Data.Functor":155,"../Data.Maybe":198,"../Data.Ord":216,"../Data.Ring":227,"../Data.Traversable":244,"../Data.Tuple":245,"../Data.Unit":249,"../Partial.Unsafe":265,"../Prelude":268,"./foreign":246}],248:[function(require,module,exports){
-"use strict";
-
-exports.unit = {};
-
-},{}],249:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Data_Show = require("../Data.Show");
-var showUnit = new Data_Show.Show(function (v) {
-    return "unit";
-});
-module.exports = {
-    showUnit: showUnit, 
-    unit: $foreign.unit
-};
-
-},{"../Data.Show":233,"./foreign":248}],250:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Show = require("../Data.Show");
-var Void = function (x) {
-    return x;
-};
-var absurd = function (a) {
-    var spin = function (__copy_v) {
-        var v = __copy_v;
-        var __tco_result;
-        var __tco_v;
-        function __tco_loop(v) {
-            __tco_v = v;
-            return;
-        };
-        while (!false) {
-            __tco_result = __tco_loop(v);
-            v = __tco_v;
-        };
-        return __tco_result;
-    };
-    return spin(a);
-};
-var showVoid = new Data_Show.Show(absurd);
-module.exports = {
-    absurd: absurd, 
-    showVoid: showVoid
-};
-
-},{"../Data.Show":233}],251:[function(require,module,exports){
-/* globals exports */
-"use strict";
-
-// module Global
-
-exports.nan = NaN;
-
-exports.isNaN = isNaN;
-
-exports.infinity = Infinity;
-
-exports.isFinite = isFinite;
-
-exports.readInt = function (radix) {
-  return function (n) {
-    return parseInt(n, radix);
-  };
-};
-
-exports.readFloat = parseFloat;
-
-exports.decodeURI = decodeURI;
-exports.encodeURI = encodeURI;
-exports.decodeURIComponent = decodeURIComponent;
-exports.encodeURIComponent = encodeURIComponent;
-
-},{}],252:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-module.exports = {
-    "decodeURI": $foreign["decodeURI"], 
-    "decodeURIComponent": $foreign["decodeURIComponent"], 
-    "encodeURI": $foreign["encodeURI"], 
-    "encodeURIComponent": $foreign["encodeURIComponent"], 
-    infinity: $foreign.infinity, 
-    "isFinite": $foreign["isFinite"], 
-    "isNaN": $foreign["isNaN"], 
-    nan: $foreign.nan, 
-    readFloat: $foreign.readFloat, 
-    readInt: $foreign.readInt
-};
-
-},{"./foreign":251}],253:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Common = require("../Common");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Aff = require("../Control.Monad.Aff");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Console = require("../Control.Monad.Eff.Console");
-var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
-var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
-var DOM = require("../DOM");
-var Data_Argonaut = require("../Data.Argonaut");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
-var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
-var Data_Either = require("../Data.Either");
-var Data_FormURLEncoded = require("../Data.FormURLEncoded");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Show = require("../Data.Show");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Network_HTTP_Affjax = require("../Network.HTTP.Affjax");
-var Network_HTTP_Affjax_Request = require("../Network.HTTP.Affjax.Request");
-var Network_HTTP_Affjax_Response = require("../Network.HTTP.Affjax.Response");
-var Partial_Unsafe = require("../Partial.Unsafe");
-var Prelude = require("../Prelude");
-var resp1Success = function (pass) {
-    return function (j) {
-        return function (loc) {
-            return function __do() {
-                Control_Monad_Eff_Console.log(Data_Show.show(Data_Argonaut_Core.showJson)(j))();
-                var eitherChallenge = Data_Argonaut_Decode_Class.decodeJson(Common.decodeJsonChallenge)(j);
-                if (eitherChallenge instanceof Data_Either.Left) {
-                    var eitherErr = Data_Argonaut_Decode_Class.decodeJson(Common.decodeJsonErr)(j);
-                    return Data_Either.either(Common.fail(Common.Login.value))(function (v) {
-                        return Common.fail(Common.Login.value)(v.value0.err);
-                    })(eitherErr)();
-                };
-                if (eitherChallenge instanceof Data_Either.Right) {
-                    Common.progress("HMAC 1")();
-                    var salted = Common.hmacSha3(Common.fromUtf8(pass), Common.fromHex(eitherChallenge.value0.value0.salt));
-                    Common.progress("HMAC 2")();
-                    var response = Common.hmacSha3(Common.fromUtf8(salted), Common.fromUtf8(eitherChallenge.value0.value0.token));
-                    Common.progress("sending response")();
-                    var data2 = Data_FormURLEncoded.fromArray([ new Data_Tuple.Tuple("token", new Data_Maybe.Just(eitherChallenge.value0.value0.token)), new Data_Tuple.Tuple("response", new Data_Maybe.Just(response)) ]);
-                    var v = Control_Monad_Aff.runAff(function (e) {
-                        return Common.fail(Common.Login.value)(Data_Show.show(Control_Monad_Eff_Exception.showError)(e));
-                    })(function (x) {
-                        return Common.welcome(x.response)(Common.Login.value);
-                    })(Network_HTTP_Affjax.post(Network_HTTP_Affjax_Request.requestableFormURLEncoded)(Network_HTTP_Affjax_Response.responsableJson)(loc)(data2))();
-                    return Data_Unit.unit;
-                };
-                throw new Error("Failed pattern match at Login line 87, column 3 - line 104, column 12: " + [ eitherChallenge.constructor.name ]);
-            };
-        };
-    };
-};
-var onLoginClick = function (login) {
-    return function (ev) {
-        return function (x) {
-            return function __do() {
-                Control_Monad_Eff_Console.log("click!")();
-                Control_Monad_Eff_JQuery.preventDefault(ev)();
-                Control_Monad_Eff_JQuery.hide(login)();
-                var v = Data_Functor.map(Control_Monad_Eff.functorEff)(Control_Monad_Eff_JQuery.setProp("disabled")(true))(Control_Monad_Eff_JQuery.select(".login input"))();
-                var v1 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#username"))();
-                var v2 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#password"))();
-                var v3 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Common.getAttr("action"))(Control_Monad_Eff_JQuery.select("#loginform"))();
-                Control_Monad_Eff_Console.log(v3)();
-                var username = Common.fromForeign(v1);
-                var password = Common.fromForeign(v2);
-                var $17 = !(Data_Maybe.isNothing(username) && Data_Maybe.isNothing(password));
-                if ($17) {
-                    Common.progress("Obtaining Challenge...")();
-                    var data1 = Data_FormURLEncoded.fromArray([ new Data_Tuple.Tuple("username", username) ]);
-                    var v4 = Control_Monad_Aff.runAff(function (e) {
-                        return Common.fail(Common.Login.value)(Data_Show.show(Control_Monad_Eff_Exception.showError)(e));
-                    })(function (y) {
-                        return resp1Success(Data_Maybe.fromJust()(password))(y.response)(v3);
-                    })(Network_HTTP_Affjax.post(Network_HTTP_Affjax_Request.requestableFormURLEncoded)(Network_HTTP_Affjax_Response.responsableJson)(v3)(data1))();
-                    return Control_Monad_Eff_Console.log("success so far")();
-                };
-                return Control_Monad_Eff_Console.log("error")();
-            };
-        };
-    };
-};
-module.exports = {
-    onLoginClick: onLoginClick, 
-    resp1Success: resp1Success
-};
-
-},{"../Common":37,"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":55,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Console":60,"../Control.Monad.Eff.Exception":62,"../Control.Monad.Eff.JQuery":64,"../DOM":100,"../Data.Argonaut":114,"../Data.Argonaut.Core":102,"../Data.Argonaut.Decode":105,"../Data.Argonaut.Decode.Class":103,"../Data.Either":136,"../Data.FormURLEncoded":146,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Show":233,"../Data.Tuple":245,"../Data.Unit":249,"../Network.HTTP.Affjax":260,"../Network.HTTP.Affjax.Request":257,"../Network.HTTP.Affjax.Response":258,"../Partial.Unsafe":265,"../Prelude":268}],254:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Activate = require("../Activate");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Console = require("../Control.Monad.Eff.Console");
-var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
-var DOM = require("../DOM");
-var Data_Function = require("../Data.Function");
-var Login = require("../Login");
-var Network_HTTP_Affjax = require("../Network.HTTP.Affjax");
-var Prelude = require("../Prelude");
-var main = Control_Monad_Eff_JQuery.ready(function __do() {
-    Control_Monad_Eff_Console.log("let's go")();
-    Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.display)(Control_Monad_Eff_JQuery.select(".js-hidden"))();
-    Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.hide)(Control_Monad_Eff_JQuery.select(".noscript"))();
-    var v = Control_Monad_Eff_JQuery.select("#activate")();
-    var v1 = Control_Monad_Eff_JQuery.select("#login")();
-    Control_Monad_Eff_JQuery.on("click")(Activate.onActivateClick(v))(v)();
-    return Control_Monad_Eff_JQuery.on("click")(Login.onLoginClick(v))(v1)();
-});
-module.exports = {
-    main: main
-};
-
-},{"../Activate":35,"../Control.Bind":46,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Console":60,"../Control.Monad.Eff.JQuery":64,"../DOM":100,"../Data.Function":149,"../Login":253,"../Network.HTTP.Affjax":260,"../Prelude":268}],255:[function(require,module,exports){
-"use strict";
-
-// module Math
-
-exports.abs = Math.abs;
-
-exports.acos = Math.acos;
-
-exports.asin = Math.asin;
-
-exports.atan = Math.atan;
-
-exports.atan2 = function (y) {
-  return function (x) {
-    return Math.atan2(y, x);
-  };
-};
-
-exports.ceil = Math.ceil;
-
-exports.cos = Math.cos;
-
-exports.exp = Math.exp;
-
-exports.floor = Math.floor;
-
-exports.trunc = Math.trunc || function (n) {
-  return n < 0 ? Math.ceil(n) : Math.floor(n);
-};
-
-exports.log = Math.log;
-
-exports.max = function (n1) {
-  return function (n2) {
-    return Math.max(n1, n2);
-  };
-};
-
-exports.min = function (n1) {
-  return function (n2) {
-    return Math.min(n1, n2);
-  };
-};
-
-exports.pow = function (n) {
-  return function (p) {
-    return Math.pow(n, p);
-  };
-};
-
-exports.remainder = function (n) {
-  return function (m) {
-    return n % m;
-  };
-};
-
-exports.round = Math.round;
-
-exports.sin = Math.sin;
-
-exports.sqrt = Math.sqrt;
-
-exports.tan = Math.tan;
-
-exports.e = Math.E;
-
-exports.ln2 = Math.LN2;
-
-exports.ln10 = Math.LN10;
-
-exports.log2e = Math.LOG2E;
-
-exports.log10e = Math.LOG10E;
-
-exports.pi = Math.PI;
-
-exports.sqrt1_2 = Math.SQRT1_2;
-
-exports.sqrt2 = Math.SQRT2;
-
-},{}],256:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-module.exports = {
-    abs: $foreign.abs, 
-    acos: $foreign.acos, 
-    asin: $foreign.asin, 
-    atan: $foreign.atan, 
-    atan2: $foreign.atan2, 
-    ceil: $foreign.ceil, 
-    cos: $foreign.cos, 
-    e: $foreign.e, 
-    exp: $foreign.exp, 
-    floor: $foreign.floor, 
-    ln10: $foreign.ln10, 
-    ln2: $foreign.ln2, 
-    log: $foreign.log, 
-    log10e: $foreign.log10e, 
-    log2e: $foreign.log2e, 
-    max: $foreign.max, 
-    min: $foreign.min, 
-    pi: $foreign.pi, 
-    pow: $foreign.pow, 
-    remainder: $foreign.remainder, 
-    round: $foreign.round, 
-    sin: $foreign.sin, 
-    sqrt: $foreign.sqrt, 
-    sqrt1_2: $foreign.sqrt1_2, 
-    sqrt2: $foreign.sqrt2, 
-    tan: $foreign.tan, 
-    trunc: $foreign.trunc
-};
-
-},{"./foreign":255}],257:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var DOM_File_Types = require("../DOM.File.Types");
-var DOM_Node_Types = require("../DOM.Node.Types");
-var DOM_XHR_Types = require("../DOM.XHR.Types");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_ArrayBuffer_Types = require("../Data.ArrayBuffer.Types");
-var Data_FormURLEncoded = require("../Data.FormURLEncoded");
-var Data_Maybe = require("../Data.Maybe");
-var Data_MediaType = require("../Data.MediaType");
-var Data_MediaType_Common = require("../Data.MediaType.Common");
-var Data_Show = require("../Data.Show");
-var Data_Tuple = require("../Data.Tuple");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var Requestable = function (toRequest) {
-    this.toRequest = toRequest;
-};
-var toRequest = function (dict) {
-    return dict.toRequest;
-};
-var requestableJson = new Requestable(function (json) {
-    return new Data_Tuple.Tuple(new Data_Maybe.Just(Data_MediaType_Common.applicationJSON), Unsafe_Coerce.unsafeCoerce(Data_Show.show(Data_Argonaut_Core.showJson)(json)));
-});
-var requestableFormURLEncoded = new Requestable(function (form) {
-    return new Data_Tuple.Tuple(new Data_Maybe.Just(Data_MediaType_Common.applicationFormURLEncoded), Unsafe_Coerce.unsafeCoerce(Data_FormURLEncoded.encode(form)));
-});
-var defaultToRequest = function ($0) {
-    return Data_Tuple.Tuple.create(Data_Maybe.Nothing.value)(Unsafe_Coerce.unsafeCoerce($0));
-};
-var requestableBlob = new Requestable(defaultToRequest);
-var requestableDocument = new Requestable(defaultToRequest);
-var requestableFloat32Array = new Requestable(defaultToRequest);
-var requestableFloat64Array = new Requestable(defaultToRequest);
-var requestableFormData = new Requestable(defaultToRequest);
-var requestableInt16Array = new Requestable(defaultToRequest);
-var requestableInt32Array = new Requestable(defaultToRequest);
-var requestableInt8Array = new Requestable(defaultToRequest);
-var requestableRequestContent = new Requestable(defaultToRequest);
-var requestableString = new Requestable(defaultToRequest);
-var requestableUint16Array = new Requestable(defaultToRequest);
-var requestableUint32Array = new Requestable(defaultToRequest);
-var requestableUint8Array = new Requestable(defaultToRequest);
-var requestableUint8ClampedArray = new Requestable(defaultToRequest);
-var requestableUnit = new Requestable(defaultToRequest);
-module.exports = {
-    Requestable: Requestable, 
-    toRequest: toRequest, 
-    requestableRequestContent: requestableRequestContent, 
-    requestableInt8Array: requestableInt8Array, 
-    requestableInt16Array: requestableInt16Array, 
-    requestableInt32Array: requestableInt32Array, 
-    requestableUint8Array: requestableUint8Array, 
-    requestableUint16Array: requestableUint16Array, 
-    requestableUint32Array: requestableUint32Array, 
-    requestableUint8ClampedArray: requestableUint8ClampedArray, 
-    requestableFloat32Array: requestableFloat32Array, 
-    requestableFloat64Array: requestableFloat64Array, 
-    requestableBlob: requestableBlob, 
-    requestableDocument: requestableDocument, 
-    requestableString: requestableString, 
-    requestableJson: requestableJson, 
-    requestableFormData: requestableFormData, 
-    requestableFormURLEncoded: requestableFormURLEncoded, 
-    requestableUnit: requestableUnit
-};
-
-},{"../Control.Semigroupoid":92,"../DOM.File.Types":95,"../DOM.Node.Types":96,"../DOM.XHR.Types":99,"../Data.Argonaut.Core":102,"../Data.ArrayBuffer.Types":120,"../Data.FormURLEncoded":146,"../Data.Maybe":198,"../Data.MediaType":200,"../Data.MediaType.Common":199,"../Data.Show":233,"../Data.Tuple":245,"../Prelude":268,"../Unsafe.Coerce":271}],258:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var DOM_File_Types = require("../DOM.File.Types");
-var DOM_Node_Types = require("../DOM.Node.Types");
-var Data_Argonaut_Core = require("../Data.Argonaut.Core");
-var Data_ArrayBuffer_Types = require("../Data.ArrayBuffer.Types");
-var Data_Eq = require("../Data.Eq");
-var Data_Foreign = require("../Data.Foreign");
-var Data_Function = require("../Data.Function");
-var Data_Identity = require("../Data.Identity");
-var Data_Maybe = require("../Data.Maybe");
-var Data_MediaType = require("../Data.MediaType");
-var Data_MediaType_Common = require("../Data.MediaType.Common");
-var Data_Show = require("../Data.Show");
-var Data_Tuple = require("../Data.Tuple");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var Unsafe_Coerce = require("../Unsafe.Coerce");
-var ArrayBufferResponse = (function () {
-    function ArrayBufferResponse() {
-
-    };
-    ArrayBufferResponse.value = new ArrayBufferResponse();
-    return ArrayBufferResponse;
-})();
-var BlobResponse = (function () {
-    function BlobResponse() {
-
-    };
-    BlobResponse.value = new BlobResponse();
-    return BlobResponse;
-})();
-var DocumentResponse = (function () {
-    function DocumentResponse() {
-
-    };
-    DocumentResponse.value = new DocumentResponse();
-    return DocumentResponse;
-})();
-var JSONResponse = (function () {
-    function JSONResponse() {
-
-    };
-    JSONResponse.value = new JSONResponse();
-    return JSONResponse;
-})();
-var StringResponse = (function () {
-    function StringResponse() {
-
-    };
-    StringResponse.value = new StringResponse();
-    return StringResponse;
-})();
-var Respondable = function (fromResponse, responseType) {
-    this.fromResponse = fromResponse;
-    this.responseType = responseType;
-};
-var showResponseType = new Data_Show.Show(function (v) {
-    if (v instanceof ArrayBufferResponse) {
-        return "ArrayBufferResponse";
-    };
-    if (v instanceof BlobResponse) {
-        return "BlobResponse";
-    };
-    if (v instanceof DocumentResponse) {
-        return "DocumentResponse";
-    };
-    if (v instanceof JSONResponse) {
-        return "JSONResponse";
-    };
-    if (v instanceof StringResponse) {
-        return "StringResponse";
-    };
-    throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 42, column 3 - line 43, column 3: " + [ v.constructor.name ]);
-});
-var responseTypeToString = function (v) {
-    if (v instanceof ArrayBufferResponse) {
-        return "arraybuffer";
-    };
-    if (v instanceof BlobResponse) {
-        return "blob";
-    };
-    if (v instanceof DocumentResponse) {
-        return "document";
-    };
-    if (v instanceof JSONResponse) {
-        return "text";
-    };
-    if (v instanceof StringResponse) {
-        return "text";
-    };
-    throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 49, column 1 - line 50, column 1: " + [ v.constructor.name ]);
-};
-var responseType = function (dict) {
-    return dict.responseType;
-};
-var responsableUnit = new Respondable(Data_Function["const"](Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Unit.unit)), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, StringResponse.value));
-var responsableString = new Respondable(Data_Foreign.readString, new Data_Tuple.Tuple(Data_Maybe.Nothing.value, StringResponse.value));
-var responsableJson = new Respondable(function ($8) {
-    return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Unsafe_Coerce.unsafeCoerce($8));
-}, new Data_Tuple.Tuple(new Data_Maybe.Just(Data_MediaType_Common.applicationJSON), JSONResponse.value));
-var responsableForeign = new Respondable(function ($9) {
-    return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Unsafe_Coerce.unsafeCoerce($9));
-}, new Data_Tuple.Tuple(Data_Maybe.Nothing.value, JSONResponse.value));
-var responsableDocument = new Respondable(Data_Foreign.unsafeReadTagged("Document"), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, DocumentResponse.value));
-var responsableBlob = new Respondable(Data_Foreign.unsafeReadTagged("Blob"), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, BlobResponse.value));
-var responsableArrayBuffer = new Respondable(Data_Foreign.unsafeReadTagged("ArrayBuffer"), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, ArrayBufferResponse.value));
-var fromResponse = function (dict) {
-    return dict.fromResponse;
-};
-var eqResponseType = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        if (v instanceof ArrayBufferResponse && v1 instanceof ArrayBufferResponse) {
-            return true;
-        };
-        if (v instanceof BlobResponse && v1 instanceof BlobResponse) {
-            return true;
-        };
-        if (v instanceof DocumentResponse && v1 instanceof DocumentResponse) {
-            return true;
-        };
-        if (v instanceof JSONResponse && v1 instanceof JSONResponse) {
-            return true;
-        };
-        if (v instanceof StringResponse && v1 instanceof StringResponse) {
-            return true;
-        };
-        return false;
-    };
-});
-module.exports = {
-    ArrayBufferResponse: ArrayBufferResponse, 
-    BlobResponse: BlobResponse, 
-    DocumentResponse: DocumentResponse, 
-    JSONResponse: JSONResponse, 
-    StringResponse: StringResponse, 
-    Respondable: Respondable, 
-    fromResponse: fromResponse, 
-    responseType: responseType, 
-    responseTypeToString: responseTypeToString, 
-    eqResponseType: eqResponseType, 
-    showResponseType: showResponseType, 
-    responsableBlob: responsableBlob, 
-    responsableDocument: responsableDocument, 
-    responsableForeign: responsableForeign, 
-    responsableString: responsableString, 
-    responsableUnit: responsableUnit, 
-    responsableArrayBuffer: responsableArrayBuffer, 
-    responsableJson: responsableJson
-};
-
-},{"../Control.Applicative":40,"../Control.Monad.Except.Trans":72,"../Control.Semigroupoid":92,"../DOM.File.Types":95,"../DOM.Node.Types":96,"../Data.Argonaut.Core":102,"../Data.ArrayBuffer.Types":120,"../Data.Eq":138,"../Data.Foreign":145,"../Data.Function":149,"../Data.Identity":161,"../Data.Maybe":198,"../Data.MediaType":200,"../Data.MediaType.Common":199,"../Data.Show":233,"../Data.Tuple":245,"../Data.Unit":249,"../Prelude":268,"../Unsafe.Coerce":271}],259:[function(require,module,exports){
-(function (process){
-/* global exports */
-/* global XMLHttpRequest */
-/* global module */
-/* global process */
-"use strict";
-
-// module Network.HTTP.Affjax
-
-// jshint maxparams: 5
-exports._ajax = function (mkHeader, options, canceler, errback, callback) {
-  var platformSpecific = { };
-  if (typeof module !== "undefined" && module.require && !(typeof process !== "undefined" && process.versions["electron"])) {
-    // We are on node.js
-    platformSpecific.newXHR = function () {
-      var XHR = module.require("xhr2");
-      return new XHR();
-    };
-
-    platformSpecific.fixupUrl = function (url) {
-      var urllib = module.require("url");
-      var u = urllib.parse(url);
-      u.protocol = u.protocol || "http:";
-      u.hostname = u.hostname || "localhost";
-      return urllib.format(u);
-    };
-
-    platformSpecific.getResponse = function (xhr) {
-      return xhr.response;
-    };
-  } else {
-    // We are in the browser
-    platformSpecific.newXHR = function () {
-      return new XMLHttpRequest();
-    };
-
-    platformSpecific.fixupUrl = function (url) {
-      return url || "/";
-    };
-
-    platformSpecific.getResponse = function (xhr) {
-      return xhr.response;
-    };
-  }
-
-  return function () {
-    var xhr = platformSpecific.newXHR();
-    var fixedUrl = platformSpecific.fixupUrl(options.url);
-    xhr.open(options.method || "GET", fixedUrl, true, options.username, options.password);
-    if (options.headers) {
-      try {
-        for (var i = 0, header; (header = options.headers[i]) != null; i++) {
-          xhr.setRequestHeader(header.field, header.value);
-        }
-      }
-      catch (e) {
-        errback(e)();
-      }
-    }
-    xhr.onerror = function () {
-      errback(new Error("AJAX request failed: " + options.method + " " + options.url))();
-    };
-    xhr.onload = function () {
-      callback({
-        status: xhr.status,
-        headers: xhr.getAllResponseHeaders().split("\r\n")
-          .filter(function (header) {
-            return header.length > 0;
-          })
-          .map(function (header) {
-            var i = header.indexOf(":");
-            return mkHeader(header.substring(0, i))(header.substring(i + 2));
-          }),
-        response: platformSpecific.getResponse(xhr)
-      })();
-    };
-    xhr.responseType = options.responseType;
-    xhr.withCredentials = options.withCredentials;
-    xhr.send(options.content);
-    return canceler(xhr);
-  };
-};
-
-// jshint maxparams: 4
-exports._cancelAjax = function (xhr, cancelError, errback, callback) {
-  return function () {
-    try { xhr.abort(); } catch (e) { return callback(false)(); }
-    return callback(true)();
-  };
-};
-
-
-}).call(this,require('_process'))
-},{"_process":273}],260:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Control_Applicative = require("../Control.Applicative");
-var Control_Bind = require("../Control.Bind");
-var Control_Monad_Aff = require("../Control.Monad.Aff");
-var Control_Monad_Aff_AVar = require("../Control.Monad.Aff.AVar");
-var Control_Monad_Eff = require("../Control.Monad.Eff");
-var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
-var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
-var Control_Monad_Eff_Ref = require("../Control.Monad.Eff.Ref");
-var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
-var Control_Monad_Except = require("../Control.Monad.Except");
-var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var DOM_XHR_Types = require("../DOM.XHR.Types");
-var Data_Argonaut_Parser = require("../Data.Argonaut.Parser");
-var Data_Array = require("../Data.Array");
-var Data_Either = require("../Data.Either");
-var Data_Eq = require("../Data.Eq");
-var Data_Foldable = require("../Data.Foldable");
-var Data_Foreign = require("../Data.Foreign");
-var Data_Function = require("../Data.Function");
-var Data_Function_Uncurried = require("../Data.Function.Uncurried");
-var Data_Functor = require("../Data.Functor");
-var Data_HTTP_Method = require("../Data.HTTP.Method");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Identity = require("../Data.Identity");
-var Data_Int = require("../Data.Int");
-var Data_List_Types = require("../Data.List.Types");
-var Data_Maybe = require("../Data.Maybe");
-var Data_MediaType = require("../Data.MediaType");
-var Data_Nullable = require("../Data.Nullable");
-var Data_Ring = require("../Data.Ring");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Time_Duration = require("../Data.Time.Duration");
-var Data_Tuple = require("../Data.Tuple");
-var $$Math = require("../Math");
-var Network_HTTP_Affjax_Request = require("../Network.HTTP.Affjax.Request");
-var Network_HTTP_Affjax_Response = require("../Network.HTTP.Affjax.Response");
-var Network_HTTP_RequestHeader = require("../Network.HTTP.RequestHeader");
-var Network_HTTP_ResponseHeader = require("../Network.HTTP.ResponseHeader");
-var Network_HTTP_StatusCode = require("../Network.HTTP.StatusCode");
-var Prelude = require("../Prelude");
-var retry = function (dictRequestable) {
-    return function (policy) {
-        return function (run) {
-            return function (req) {
-                var retryState = function (v) {
-                    if (v instanceof Data_Either.Left) {
-                        return Data_Either.Left.create(new Data_Either.Left(v.value0));
-                    };
-                    if (v instanceof Data_Either.Right) {
-                        if (v.value0.status === 200) {
-                            return new Data_Either.Right(v.value0);
-                        };
-                        var $49 = policy.shouldRetryWithStatusCode(v.value0.status);
-                        if ($49) {
-                            return Data_Either.Left.create(new Data_Either.Right(v.value0));
-                        };
-                        return new Data_Either.Right(v.value0);
-                    };
-                    throw new Error("Failed pattern match at Network.HTTP.Affjax line 217, column 5 - line 217, column 44: " + [ v.constructor.name ]);
-                };
-                var go = function (failureRef) {
-                    return function (n) {
-                        return Control_Bind.bind(Control_Monad_Aff.bindAff)(Data_Functor.map(Control_Monad_Aff.functorAff)(retryState)(Control_Monad_Aff.attempt(run(req))))(function (v) {
-                            if (v instanceof Data_Either.Left) {
-                                return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Eff_Class.liftEff(Control_Monad_Aff.monadEffAff)(Control_Monad_Eff_Ref.writeRef(failureRef)(new Data_Maybe.Just(v.value0))))(function () {
-                                    return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Aff.delay(policy.delayCurve(n)))(function () {
-                                        return go(failureRef)(n + 1 | 0);
-                                    });
-                                });
-                            };
-                            if (v instanceof Data_Either.Right) {
-                                return Control_Applicative.pure(Control_Monad_Aff.applicativeAff)(v.value0);
-                            };
-                            throw new Error("Failed pattern match at Network.HTTP.Affjax line 229, column 7 - line 234, column 32: " + [ v.constructor.name ]);
-                        });
-                    };
-                };
-                return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Eff_Class.liftEff(Control_Monad_Aff.monadEffAff)(Control_Monad_Eff_Ref.newRef(Data_Maybe.Nothing.value)))(function (v) {
-                    var loop = go(v);
-                    if (policy.timeout instanceof Data_Maybe.Nothing) {
-                        return loop(1);
-                    };
-                    if (policy.timeout instanceof Data_Maybe.Just) {
-                        return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff_AVar.makeVar)(function (v1) {
-                            return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff.forkAff(Control_Bind.bind(Control_Monad_Aff.bindAff)(loop(1))(function ($104) {
-                                return Control_Monad_Aff_AVar.putVar(v1)(Data_Maybe.Just.create($104));
-                            })))(function (v2) {
-                                return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff.forkAff(Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Aff.delay(policy.timeout.value0))(function () {
-                                    return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Aff_AVar.putVar(v1)(Data_Maybe.Nothing.value))(function () {
-                                        return Control_Monad_Aff.cancel(v2)(Control_Monad_Eff_Exception.error("Cancel"));
-                                    });
-                                })))(function (v3) {
-                                    return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff_AVar.takeVar(v1))(function (v4) {
-                                        if (v4 instanceof Data_Maybe.Nothing) {
-                                            return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Eff_Class.liftEff(Control_Monad_Aff.monadEffAff)(Control_Monad_Eff_Ref.readRef(v)))(function (v5) {
-                                                if (v5 instanceof Data_Maybe.Nothing) {
-                                                    return Control_Monad_Error_Class.throwError(Control_Monad_Aff.monadThrowAff)(Control_Monad_Eff_Exception.error("Timeout"));
-                                                };
-                                                if (v5 instanceof Data_Maybe.Just) {
-                                                    return Data_Either.either(Control_Monad_Error_Class.throwError(Control_Monad_Aff.monadThrowAff))(Control_Applicative.pure(Control_Monad_Aff.applicativeAff))(v5.value0);
-                                                };
-                                                throw new Error("Failed pattern match at Network.HTTP.Affjax line 209, column 11 - line 211, column 61: " + [ v5.constructor.name ]);
-                                            });
-                                        };
-                                        if (v4 instanceof Data_Maybe.Just) {
-                                            return Control_Applicative.pure(Control_Monad_Aff.applicativeAff)(v4.value0);
-                                        };
-                                        throw new Error("Failed pattern match at Network.HTTP.Affjax line 206, column 7 - line 212, column 31: " + [ v4.constructor.name ]);
-                                    });
-                                });
-                            });
-                        });
-                    };
-                    throw new Error("Failed pattern match at Network.HTTP.Affjax line 195, column 3 - line 212, column 31: " + [ policy.timeout.constructor.name ]);
-                });
-            };
-        };
-    };
-};
-var defaultRetryPolicy = {
-    timeout: Data_Maybe.Nothing.value, 
-    delayCurve: function (n) {
-        return Data_Time_Duration.Milliseconds($$Math.max(30.0 * 1000.0)(100.0 * $$Math.pow(2.0)(Data_Int.toNumber(n - 1 | 0))));
-    }, 
-    shouldRetryWithStatusCode: Data_Function["const"](false)
-};
-var defaultRequest = {
-    method: new Data_Either.Left(Data_HTTP_Method.GET.value), 
-    url: "/", 
-    headers: [  ], 
-    content: Data_Maybe.Nothing.value, 
-    username: Data_Maybe.Nothing.value, 
-    password: Data_Maybe.Nothing.value, 
-    withCredentials: false
-};
-var cancelAjax = function (xhr) {
-    return function (err) {
-        return Control_Monad_Aff.makeAff(function (eb) {
-            return function (cb) {
-                return $foreign._cancelAjax(xhr, err, eb, cb);
-            };
-        });
-    };
-};
-var affjax$prime = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function (req) {
-            return function (eb) {
-                return function (cb) {
-                    var responseSettings = Network_HTTP_Affjax_Response.responseType(dictRespondable);
-                    var requestSettings = (function () {
-                        var v = Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_Affjax_Request.toRequest(dictRequestable))(req.content);
-                        if (v instanceof Data_Maybe.Nothing) {
-                            return new Data_Tuple.Tuple(Data_Maybe.Nothing.value, Data_Maybe.Nothing.value);
-                        };
-                        if (v instanceof Data_Maybe.Just) {
-                            return new Data_Tuple.Tuple(v.value0.value0, new Data_Maybe.Just(v.value0.value1));
-                        };
-                        throw new Error("Failed pattern match at Network.HTTP.Affjax line 262, column 21 - line 264, column 49: " + [ v.constructor.name ]);
-                    })();
-                    var parseJSON = function ($105) {
-                        return Data_Either.either(function ($106) {
-                            return Data_Foreign.fail(Data_Foreign.JSONError.create($106));
-                        })(function ($107) {
-                            return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Foreign.toForeign($107));
-                        })(Data_Argonaut_Parser.jsonParser($105));
-                    };
-                    var fromResponse$prime = (function () {
-                        var v = Data_Tuple.snd(responseSettings);
-                        if (v instanceof Network_HTTP_Affjax_Response.JSONResponse) {
-                            return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(Network_HTTP_Affjax_Response.fromResponse(dictRespondable))(Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(parseJSON)(Data_Foreign.readString));
-                        };
-                        return Network_HTTP_Affjax_Response.fromResponse(dictRespondable);
-                    })();
-                    var cb$prime = function (res) {
-                        var v = Data_Functor.map(Data_Either.functorEither)(function (v1) {
-                            var $72 = {};
-                            for (var $73 in res) {
-                                if ({}.hasOwnProperty.call(res, $73)) {
-                                    $72[$73] = res[$73];
-                                };
-                            };
-                            $72.response = v1;
-                            return $72;
-                        })(Control_Monad_Except.runExcept(fromResponse$prime(res.response)));
-                        if (v instanceof Data_Either.Left) {
-                            return eb(Control_Monad_Eff_Exception.error(Data_Show.show(Data_List_Types.showNonEmptyList(Data_Foreign.showForeignError))(v.value0)));
-                        };
-                        if (v instanceof Data_Either.Right) {
-                            return cb(v.value0);
-                        };
-                        throw new Error("Failed pattern match at Network.HTTP.Affjax line 281, column 13 - line 283, column 26: " + [ v.constructor.name ]);
-                    };
-                    var addHeader = function (mh) {
-                        return function (hs) {
-                            if (mh instanceof Data_Maybe.Just && !Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Function.on(Data_Eq.eq(Data_Eq.eqString))(Network_HTTP_RequestHeader.requestHeaderName)(mh.value0))(hs)) {
-                                return Data_Array.snoc(hs)(mh.value0);
-                            };
-                            return hs;
-                        };
-                    };
-                    var headers = addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.ContentType.create)(Data_Tuple.fst(requestSettings)))(addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.Accept.create)(Data_Tuple.fst(responseSettings)))(req.headers));
-                    var req$prime = {
-                        method: Data_HTTP_Method.print(req.method), 
-                        url: req.url, 
-                        headers: Data_Functor.map(Data_Functor.functorArray)(function (h) {
-                            return {
-                                field: Network_HTTP_RequestHeader.requestHeaderName(h), 
-                                value: Network_HTTP_RequestHeader.requestHeaderValue(h)
-                            };
-                        })(headers), 
-                        content: Data_Nullable.toNullable(Data_Tuple.snd(requestSettings)), 
-                        responseType: Network_HTTP_Affjax_Response.responseTypeToString(Data_Tuple.snd(responseSettings)), 
-                        username: Data_Nullable.toNullable(req.username), 
-                        password: Data_Nullable.toNullable(req.password), 
-                        withCredentials: req.withCredentials
-                    };
-                    return $foreign._ajax(Network_HTTP_ResponseHeader.responseHeader, req$prime, cancelAjax, eb, cb$prime);
-                };
-            };
-        };
-    };
-};
-var affjax = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function ($108) {
-            return Control_Monad_Aff["makeAff'"](affjax$prime(dictRequestable)(dictRespondable)($108));
-        };
-    };
-};
-var $$delete = function (dictRespondable) {
-    return function (u) {
-        return affjax(Network_HTTP_Affjax_Request.requestableUnit)(dictRespondable)((function () {
-            var $80 = {};
-            for (var $81 in defaultRequest) {
-                if ({}.hasOwnProperty.call(defaultRequest, $81)) {
-                    $80[$81] = defaultRequest[$81];
-                };
-            };
-            $80.method = new Data_Either.Left(Data_HTTP_Method.DELETE.value);
-            $80.url = u;
-            return $80;
-        })());
-    };
-};
-var delete_ = $$delete(Network_HTTP_Affjax_Response.responsableUnit);
-var get = function (dictRespondable) {
-    return function (u) {
-        return affjax(Network_HTTP_Affjax_Request.requestableUnit)(dictRespondable)((function () {
-            var $83 = {};
-            for (var $84 in defaultRequest) {
-                if ({}.hasOwnProperty.call(defaultRequest, $84)) {
-                    $83[$84] = defaultRequest[$84];
-                };
-            };
-            $83.url = u;
-            return $83;
-        })());
-    };
-};
-var patch = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function (u) {
-            return function (c) {
-                return affjax(dictRequestable)(dictRespondable)((function () {
-                    var $86 = {};
-                    for (var $87 in defaultRequest) {
-                        if ({}.hasOwnProperty.call(defaultRequest, $87)) {
-                            $86[$87] = defaultRequest[$87];
-                        };
-                    };
-                    $86.method = new Data_Either.Left(Data_HTTP_Method.PATCH.value);
-                    $86.url = u;
-                    $86.content = new Data_Maybe.Just(c);
-                    return $86;
-                })());
-            };
-        };
-    };
-};
-var patch_ = function (dictRequestable) {
-    return patch(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
-};
-var patch$prime = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function (u) {
-            return function (c) {
-                return affjax(dictRequestable)(dictRespondable)((function () {
-                    var $89 = {};
-                    for (var $90 in defaultRequest) {
-                        if ({}.hasOwnProperty.call(defaultRequest, $90)) {
-                            $89[$90] = defaultRequest[$90];
-                        };
-                    };
-                    $89.method = new Data_Either.Left(Data_HTTP_Method.PATCH.value);
-                    $89.url = u;
-                    $89.content = c;
-                    return $89;
-                })());
-            };
-        };
-    };
-};
-var patch_$prime = function (dictRequestable) {
-    return patch$prime(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
-};
-var post = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function (u) {
-            return function (c) {
-                return affjax(dictRequestable)(dictRespondable)((function () {
-                    var $92 = {};
-                    for (var $93 in defaultRequest) {
-                        if ({}.hasOwnProperty.call(defaultRequest, $93)) {
-                            $92[$93] = defaultRequest[$93];
-                        };
-                    };
-                    $92.method = new Data_Either.Left(Data_HTTP_Method.POST.value);
-                    $92.url = u;
-                    $92.content = new Data_Maybe.Just(c);
-                    return $92;
-                })());
-            };
-        };
-    };
-};
-var post_ = function (dictRequestable) {
-    return post(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
-};
-var post$prime = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function (u) {
-            return function (c) {
-                return affjax(dictRequestable)(dictRespondable)((function () {
-                    var $95 = {};
-                    for (var $96 in defaultRequest) {
-                        if ({}.hasOwnProperty.call(defaultRequest, $96)) {
-                            $95[$96] = defaultRequest[$96];
-                        };
-                    };
-                    $95.method = new Data_Either.Left(Data_HTTP_Method.POST.value);
-                    $95.url = u;
-                    $95.content = c;
-                    return $95;
-                })());
-            };
-        };
-    };
-};
-var post_$prime = function (dictRequestable) {
-    return post$prime(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
-};
-var put = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function (u) {
-            return function (c) {
-                return affjax(dictRequestable)(dictRespondable)((function () {
-                    var $98 = {};
-                    for (var $99 in defaultRequest) {
-                        if ({}.hasOwnProperty.call(defaultRequest, $99)) {
-                            $98[$99] = defaultRequest[$99];
-                        };
-                    };
-                    $98.method = new Data_Either.Left(Data_HTTP_Method.PUT.value);
-                    $98.url = u;
-                    $98.content = new Data_Maybe.Just(c);
-                    return $98;
-                })());
-            };
-        };
-    };
-};
-var put_ = function (dictRequestable) {
-    return put(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
-};
-var put$prime = function (dictRequestable) {
-    return function (dictRespondable) {
-        return function (u) {
-            return function (c) {
-                return affjax(dictRequestable)(dictRespondable)((function () {
-                    var $101 = {};
-                    for (var $102 in defaultRequest) {
-                        if ({}.hasOwnProperty.call(defaultRequest, $102)) {
-                            $101[$102] = defaultRequest[$102];
-                        };
-                    };
-                    $101.method = new Data_Either.Left(Data_HTTP_Method.PUT.value);
-                    $101.url = u;
-                    $101.content = c;
-                    return $101;
-                })());
-            };
-        };
-    };
-};
-var put_$prime = function (dictRequestable) {
-    return put$prime(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
-};
-module.exports = {
-    affjax: affjax, 
-    "affjax'": affjax$prime, 
-    defaultRequest: defaultRequest, 
-    defaultRetryPolicy: defaultRetryPolicy, 
-    "delete": $$delete, 
-    delete_: delete_, 
-    get: get, 
-    patch: patch, 
-    "patch'": patch$prime, 
-    patch_: patch_, 
-    "patch_'": patch_$prime, 
-    post: post, 
-    "post'": post$prime, 
-    post_: post_, 
-    "post_'": post_$prime, 
-    put: put, 
-    "put'": put$prime, 
-    put_: put_, 
-    "put_'": put_$prime, 
-    retry: retry
-};
-
-},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":55,"../Control.Monad.Aff.AVar":51,"../Control.Monad.Eff":70,"../Control.Monad.Eff.Class":58,"../Control.Monad.Eff.Exception":62,"../Control.Monad.Eff.Ref":66,"../Control.Monad.Error.Class":71,"../Control.Monad.Except":73,"../Control.Monad.Except.Trans":72,"../Control.Semigroupoid":92,"../DOM.XHR.Types":99,"../Data.Argonaut.Parser":111,"../Data.Array":119,"../Data.Either":136,"../Data.Eq":138,"../Data.Foldable":143,"../Data.Foreign":145,"../Data.Function":149,"../Data.Function.Uncurried":148,"../Data.Functor":155,"../Data.HTTP.Method":158,"../Data.HeytingAlgebra":160,"../Data.Identity":161,"../Data.Int":165,"../Data.List.Types":193,"../Data.Maybe":198,"../Data.MediaType":200,"../Data.Nullable":212,"../Data.Ring":227,"../Data.Semiring":231,"../Data.Show":233,"../Data.Time.Duration":242,"../Data.Tuple":245,"../Math":256,"../Network.HTTP.Affjax.Request":257,"../Network.HTTP.Affjax.Response":258,"../Network.HTTP.RequestHeader":261,"../Network.HTTP.ResponseHeader":262,"../Network.HTTP.StatusCode":263,"../Prelude":268,"./foreign":259}],261:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Data_Eq = require("../Data.Eq");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_MediaType = require("../Data.MediaType");
-var Data_Newtype = require("../Data.Newtype");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Prelude = require("../Prelude");
-var Accept = (function () {
-    function Accept(value0) {
-        this.value0 = value0;
-    };
-    Accept.create = function (value0) {
-        return new Accept(value0);
-    };
-    return Accept;
-})();
-var ContentType = (function () {
-    function ContentType(value0) {
-        this.value0 = value0;
-    };
-    ContentType.create = function (value0) {
-        return new ContentType(value0);
-    };
-    return ContentType;
-})();
-var RequestHeader = (function () {
-    function RequestHeader(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    RequestHeader.create = function (value0) {
-        return function (value1) {
-            return new RequestHeader(value0, value1);
-        };
-    };
-    return RequestHeader;
-})();
-var showRequestHeader = new Data_Show.Show(function (v) {
-    if (v instanceof Accept) {
-        return "(Accept " + (Data_Show.show(Data_MediaType.showMediaType)(v.value0) + ")");
-    };
-    if (v instanceof ContentType) {
-        return "(ContentType " + (Data_Show.show(Data_MediaType.showMediaType)(v.value0) + ")");
-    };
-    if (v instanceof RequestHeader) {
-        return "(RequestHeader " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(Data_Show.showString)(v.value1) + ")")));
-    };
-    throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 20, column 3 - line 21, column 3: " + [ v.constructor.name ]);
-});
-var requestHeaderValue = function (v) {
-    if (v instanceof Accept) {
-        return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
-    };
-    if (v instanceof ContentType) {
-        return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
-    };
-    if (v instanceof RequestHeader) {
-        return v.value1;
-    };
-    throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 30, column 1 - line 30, column 41: " + [ v.constructor.name ]);
-};
-var requestHeaderName = function (v) {
-    if (v instanceof Accept) {
-        return "Accept";
-    };
-    if (v instanceof ContentType) {
-        return "Content-Type";
-    };
-    if (v instanceof RequestHeader) {
-        return v.value0;
-    };
-    throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 25, column 1 - line 26, column 1: " + [ v.constructor.name ]);
-};
-var eqRequestHeader = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        if (v instanceof Accept && v1 instanceof Accept) {
-            return Data_Eq.eq(Data_MediaType.eqMediaType)(v.value0)(v1.value0);
-        };
-        if (v instanceof ContentType && v1 instanceof ContentType) {
-            return Data_Eq.eq(Data_MediaType.eqMediaType)(v.value0)(v1.value0);
-        };
-        if (v instanceof RequestHeader && v1 instanceof RequestHeader) {
-            return v.value0 === v1.value0 && v.value1 === v1.value1;
-        };
-        return false;
-    };
-});
-module.exports = {
-    Accept: Accept, 
-    ContentType: ContentType, 
-    RequestHeader: RequestHeader, 
-    requestHeaderName: requestHeaderName, 
-    requestHeaderValue: requestHeaderValue, 
-    eqRequestHeader: eqRequestHeader, 
-    showRequestHeader: showRequestHeader
-};
-
-},{"../Data.Eq":138,"../Data.HeytingAlgebra":160,"../Data.MediaType":200,"../Data.Newtype":209,"../Data.Semigroup":229,"../Data.Show":233,"../Prelude":268}],262:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Apply = require("../Control.Apply");
-var Data_Eq = require("../Data.Eq");
-var Data_Generic = require("../Data.Generic");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var ResponseHeader = (function () {
-    function ResponseHeader(value0, value1) {
-        this.value0 = value0;
-        this.value1 = value1;
-    };
-    ResponseHeader.create = function (value0) {
-        return function (value1) {
-            return new ResponseHeader(value0, value1);
-        };
-    };
-    return ResponseHeader;
-})();
-var showResponseHeader = new Data_Show.Show(function (v) {
-    return "(ResponseHeader " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(Data_Show.showString)(v.value1) + ")")));
-});
-var responseHeaderValue = function (v) {
-    return v.value1;
-};
-var responseHeaderName = function (v) {
-    return v.value0;
-};
-var responseHeader = function (field) {
-    return function (value) {
-        return new ResponseHeader(field, value);
-    };
-};
-var genericResponseHeader = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Network.HTTP.ResponseHeader.ResponseHeader" && v.value1.length === 2)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(ResponseHeader.create))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][0](Data_Unit.unit))))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][1](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Network.HTTP.ResponseHeader.ResponseHeader", [ {
-        sigConstructor: "Network.HTTP.ResponseHeader.ResponseHeader", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
-        }, function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Network.HTTP.ResponseHeader.ResponseHeader", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericString)(v.value0);
-    }, function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericString)(v.value1);
-    } ]);
-});
-var eqResponseHeader = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        return v.value0 === v1.value0 && v.value1 === v1.value1;
-    };
-});
-module.exports = {
-    responseHeader: responseHeader, 
-    responseHeaderName: responseHeaderName, 
-    responseHeaderValue: responseHeaderValue, 
-    genericResponseHeader: genericResponseHeader, 
-    eqResponseHeader: eqResponseHeader, 
-    showResponseHeader: showResponseHeader
-};
-
-},{"../Control.Apply":42,"../Data.Eq":138,"../Data.Generic":157,"../Data.HeytingAlgebra":160,"../Data.Maybe":198,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Unit":249,"../Prelude":268}],263:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Apply = require("../Control.Apply");
-var Data_Eq = require("../Data.Eq");
-var Data_Generic = require("../Data.Generic");
-var Data_Maybe = require("../Data.Maybe");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Show = require("../Data.Show");
-var Data_Unit = require("../Data.Unit");
-var Prelude = require("../Prelude");
-var StatusCode = function (x) {
-    return x;
-};
-var showStatusCode = new Data_Show.Show(function (v) {
-    return "(StatusCode " + (Data_Show.show(Data_Show.showInt)(v) + ")");
-});
-var genericStatusCode = new Data_Generic.Generic(function (v) {
-    if (v instanceof Data_Generic.SProd && (v.value0 === "Network.HTTP.StatusCode.StatusCode" && v.value1.length === 1)) {
-        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(StatusCode))(Data_Generic.fromSpine(Data_Generic.genericInt)(v["value1"][0](Data_Unit.unit)));
-    };
-    return Data_Maybe.Nothing.value;
-}, function ($dollarq) {
-    return new Data_Generic.SigProd("Network.HTTP.StatusCode.StatusCode", [ {
-        sigConstructor: "Network.HTTP.StatusCode.StatusCode", 
-        sigValues: [ function ($dollarq1) {
-            return Data_Generic.toSignature(Data_Generic.genericInt)(Data_Generic.anyProxy);
-        } ]
-    } ]);
-}, function (v) {
-    return new Data_Generic.SProd("Network.HTTP.StatusCode.StatusCode", [ function ($dollarq) {
-        return Data_Generic.toSpine(Data_Generic.genericInt)(v);
-    } ]);
-});
-var eqStatusCode = new Data_Eq.Eq(function (v) {
-    return function (v1) {
-        return v === v1;
-    };
-});
-module.exports = {
-    StatusCode: StatusCode, 
-    genericStatusCode: genericStatusCode, 
-    eqStatusCode: eqStatusCode, 
-    showStatusCode: showStatusCode
-};
-
-},{"../Control.Apply":42,"../Data.Eq":138,"../Data.Generic":157,"../Data.Maybe":198,"../Data.Semigroup":229,"../Data.Show":233,"../Data.Unit":249,"../Prelude":268}],264:[function(require,module,exports){
-"use strict";
-
-// module Partial.Unsafe
-
-exports.unsafePartial = function (f) {
-  return f();
-};
-
-exports.unsafePartialBecause = function (reason) {
-  return function (f) {
-    try {
-      return exports.unsafePartial(f);
-    } catch (err) {
-      throw new Error("unsafePartial failed. The following " +
-                      "assumption was incorrect: '" + reason + "'.");
-    }
-  };
-};
-
-},{}],265:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var Partial = require("../Partial");
-var unsafeCrashWith = function (msg) {
-    return $foreign.unsafePartial(function (dictPartial) {
-        return Partial.crashWith(dictPartial)(msg);
-    });
-};
-module.exports = {
-    unsafeCrashWith: unsafeCrashWith, 
-    unsafePartial: $foreign.unsafePartial, 
-    unsafePartialBecause: $foreign.unsafePartialBecause
-};
-
-},{"../Partial":267,"./foreign":264}],266:[function(require,module,exports){
-"use strict";
-
-// module Partial
-
-exports.crashWith = function () {
-  return function (msg) {
-    throw new Error(msg);
-  };
-};
-
-},{}],267:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-var crash = function (dictPartial) {
-    return $foreign.crashWith(dictPartial)("Partial.crash: partial function");
-};
-module.exports = {
-    crash: crash, 
-    crashWith: $foreign.crashWith
-};
-
-},{"./foreign":266}],268:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Control_Applicative = require("../Control.Applicative");
-var Control_Apply = require("../Control.Apply");
-var Control_Bind = require("../Control.Bind");
-var Control_Category = require("../Control.Category");
-var Control_Monad = require("../Control.Monad");
-var Control_Semigroupoid = require("../Control.Semigroupoid");
-var Data_Boolean = require("../Data.Boolean");
-var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
-var Data_Bounded = require("../Data.Bounded");
-var Data_CommutativeRing = require("../Data.CommutativeRing");
-var Data_Eq = require("../Data.Eq");
-var Data_EuclideanRing = require("../Data.EuclideanRing");
-var Data_Field = require("../Data.Field");
-var Data_Function = require("../Data.Function");
-var Data_Functor = require("../Data.Functor");
-var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
-var Data_NaturalTransformation = require("../Data.NaturalTransformation");
-var Data_Ord = require("../Data.Ord");
-var Data_Ordering = require("../Data.Ordering");
-var Data_Ring = require("../Data.Ring");
-var Data_Semigroup = require("../Data.Semigroup");
-var Data_Semiring = require("../Data.Semiring");
-var Data_Show = require("../Data.Show");
-var Data_Unit = require("../Data.Unit");
-var Data_Void = require("../Data.Void");
-module.exports = {};
-
-},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":86,"../Control.Semigroupoid":92,"../Data.Boolean":129,"../Data.BooleanAlgebra":130,"../Data.Bounded":132,"../Data.CommutativeRing":133,"../Data.Eq":138,"../Data.EuclideanRing":140,"../Data.Field":141,"../Data.Function":149,"../Data.Functor":155,"../Data.HeytingAlgebra":160,"../Data.NaturalTransformation":208,"../Data.Ord":216,"../Data.Ordering":217,"../Data.Ring":227,"../Data.Semigroup":229,"../Data.Semiring":231,"../Data.Show":233,"../Data.Unit":249,"../Data.Void":250}],269:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var Proxy3 = (function () {
-    function Proxy3() {
-
-    };
-    Proxy3.value = new Proxy3();
-    return Proxy3;
-})();
-var Proxy2 = (function () {
-    function Proxy2() {
-
-    };
-    Proxy2.value = new Proxy2();
-    return Proxy2;
-})();
-var $$Proxy = (function () {
-    function $$Proxy() {
-
-    };
-    $$Proxy.value = new $$Proxy();
-    return $$Proxy;
-})();
-module.exports = {
-    "Proxy": $$Proxy, 
-    Proxy2: Proxy2, 
-    Proxy3: Proxy3
-};
-
-},{}],270:[function(require,module,exports){
-"use strict";
-
-// module Unsafe.Coerce
-
-exports.unsafeCoerce = function (x) {
-  return x;
-};
-
-},{}],271:[function(require,module,exports){
-// Generated by purs version 0.11.3
-"use strict";
-var $foreign = require("./foreign");
-module.exports = {
-    unsafeCoerce: $foreign.unsafeCoerce
-};
-
-},{"./foreign":270}],272:[function(require,module,exports){
-require('Main').main();
-
-},{"Main":254}],273:[function(require,module,exports){
-// shim for using process in browser
-var process = module.exports = {};
-
-// cached from whatever global is present so that test runners that stub it
-// don't break things.  But we need to wrap it in a try catch in case it is
-// wrapped in strict mode code which doesn't define any globals.  It's inside a
-// function because try/catches deoptimize in certain engines.
-
-var cachedSetTimeout;
-var cachedClearTimeout;
-
-function defaultSetTimout() {
-    throw new Error('setTimeout has not been defined');
-}
-function defaultClearTimeout () {
-    throw new Error('clearTimeout has not been defined');
-}
-(function () {
-    try {
-        if (typeof setTimeout === 'function') {
-            cachedSetTimeout = setTimeout;
-        } else {
-            cachedSetTimeout = defaultSetTimout;
-        }
-    } catch (e) {
-        cachedSetTimeout = defaultSetTimout;
-    }
-    try {
-        if (typeof clearTimeout === 'function') {
-            cachedClearTimeout = clearTimeout;
-        } else {
-            cachedClearTimeout = defaultClearTimeout;
-        }
-    } catch (e) {
-        cachedClearTimeout = defaultClearTimeout;
-    }
-} ())
-function runTimeout(fun) {
-    if (cachedSetTimeout === setTimeout) {
-        //normal enviroments in sane situations
-        return setTimeout(fun, 0);
-    }
-    // if setTimeout wasn't available but was latter defined
-    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
-        cachedSetTimeout = setTimeout;
-        return setTimeout(fun, 0);
-    }
-    try {
-        // when when somebody has screwed with setTimeout but no I.E. maddness
-        return cachedSetTimeout(fun, 0);
-    } catch(e){
-        try {
-            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
-            return cachedSetTimeout.call(null, fun, 0);
-        } catch(e){
-            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
-            return cachedSetTimeout.call(this, fun, 0);
-        }
-    }
-
-
-}
-function runClearTimeout(marker) {
-    if (cachedClearTimeout === clearTimeout) {
-        //normal enviroments in sane situations
-        return clearTimeout(marker);
-    }
-    // if clearTimeout wasn't available but was latter defined
-    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
-        cachedClearTimeout = clearTimeout;
-        return clearTimeout(marker);
-    }
-    try {
-        // when when somebody has screwed with setTimeout but no I.E. maddness
-        return cachedClearTimeout(marker);
-    } catch (e){
-        try {
-            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
-            return cachedClearTimeout.call(null, marker);
-        } catch (e){
-            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
-            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
-            return cachedClearTimeout.call(this, marker);
-        }
-    }
-
-
-
-}
-var queue = [];
-var draining = false;
-var currentQueue;
-var queueIndex = -1;
-
-function cleanUpNextTick() {
-    if (!draining || !currentQueue) {
-        return;
-    }
-    draining = false;
-    if (currentQueue.length) {
-        queue = currentQueue.concat(queue);
-    } else {
-        queueIndex = -1;
-    }
-    if (queue.length) {
-        drainQueue();
-    }
-}
-
-function drainQueue() {
-    if (draining) {
-        return;
-    }
-    var timeout = runTimeout(cleanUpNextTick);
-    draining = true;
-
-    var len = queue.length;
-    while(len) {
-        currentQueue = queue;
-        queue = [];
-        while (++queueIndex < len) {
-            if (currentQueue) {
-                currentQueue[queueIndex].run();
-            }
-        }
-        queueIndex = -1;
-        len = queue.length;
-    }
-    currentQueue = null;
-    draining = false;
-    runClearTimeout(timeout);
-}
-
-process.nextTick = function (fun) {
-    var args = new Array(arguments.length - 1);
-    if (arguments.length > 1) {
-        for (var i = 1; i < arguments.length; i++) {
-            args[i - 1] = arguments[i];
-        }
-    }
-    queue.push(new Item(fun, args));
-    if (queue.length === 1 && !draining) {
-        runTimeout(drainQueue);
-    }
-};
-
-// v8 likes predictible objects
-function Item(fun, array) {
-    this.fun = fun;
-    this.array = array;
-}
-Item.prototype.run = function () {
-    this.fun.apply(null, this.array);
-};
-process.title = 'browser';
-process.browser = true;
-process.env = {};
-process.argv = [];
-process.version = ''; // empty string to avoid regexp issues
-process.versions = {};
-
-function noop() {}
-
-process.on = noop;
-process.addListener = noop;
-process.once = noop;
-process.off = noop;
-process.removeListener = noop;
-process.removeAllListeners = noop;
-process.emit = noop;
-
-process.binding = function (name) {
-    throw new Error('process.binding is not supported');
-};
-
-process.cwd = function () { return '/' };
-process.chdir = function (dir) {
-    throw new Error('process.chdir is not supported');
-};
-process.umask = function() { return 0; };
-
-},{}]},{},[272]);
+// Generated by purs version 0.11.4
+"use strict";
+var Common = require("../Common");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Aff = require("../Control.Monad.Aff");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Console = require("../Control.Monad.Eff.Console");
+var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
+var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
+var DOM = require("../DOM");
+var Data_Eq = require("../Data.Eq");
+var Data_FormURLEncoded = require("../Data.FormURLEncoded");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Show = require("../Data.Show");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Network_HTTP_Affjax = require("../Network.HTTP.Affjax");
+var Network_HTTP_Affjax_Request = require("../Network.HTTP.Affjax.Request");
+var Network_HTTP_Affjax_Response = require("../Network.HTTP.Affjax.Response");
+var Partial_Unsafe = require("../Partial.Unsafe");
+var Prelude = require("../Prelude");
+var onActivateClick = function (activate) {
+    return function (ev) {
+        return function (v) {
+            return function __do() {
+                Control_Monad_Eff_JQuery.preventDefault(ev)();
+                var v1 = Common.getAttr("data-token")(activate)();
+                var v2 = Common.getAttr("data-salt")(activate)();
+                var v3 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#password1"))();
+                var v4 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#password2"))();
+                var v5 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Common.getAttr("action"))(Control_Monad_Eff_JQuery.select("#activateform"))();
+                Control_Monad_Eff_Console.log(v5)();
+                var password2 = Common.fromForeign(v4);
+                var password1 = Common.fromForeign(v3);
+                var $13 = !(Data_Maybe.isNothing(password1) && Data_Maybe.isNothing(password2));
+                if ($13) {
+                    var $14 = Data_Eq.eq(Data_Maybe.eqMaybe(Data_Eq.eqString))(password1)(password2);
+                    if ($14) {
+                        Common.progress("Salting password")();
+                        var salted = Common.hmacSha3(Common.fromUtf8(Data_Maybe.fromJust()(password1)), Common.fromHex(v2));
+                        Common.progress("Requesting account activation...")();
+                        var dat = Data_FormURLEncoded.fromArray([ new Data_Tuple.Tuple("salted", new Data_Maybe.Just(salted)) ]);
+                        var v6 = Control_Monad_Aff.runAff(function (e) {
+                            return Common.fail(Common.Activate.value)(Data_Show.show(Control_Monad_Eff_Exception.showError)(e));
+                        })(function (x) {
+                            return Common.welcome(x.response)(Common.Activate.value);
+                        })(Network_HTTP_Affjax.post(Network_HTTP_Affjax_Request.requestableFormURLEncoded)(Network_HTTP_Affjax_Response.responsableJson)(v5)(dat))();
+                        return Data_Unit.unit;
+                    };
+                    return Common.fail(Common.Activate.value)("Passwords must match")();
+                };
+                return Common.fail(Common.Activate.value)("Passwords error")();
+            };
+        };
+    };
+};
+module.exports = {
+    onActivateClick: onActivateClick
+};
+
+},{"../Common":37,"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":56,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Console":61,"../Control.Monad.Eff.Exception":63,"../Control.Monad.Eff.JQuery":65,"../DOM":101,"../Data.Eq":140,"../Data.FormURLEncoded":148,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Show":241,"../Data.Tuple":255,"../Data.Unit":259,"../Network.HTTP.Affjax":270,"../Network.HTTP.Affjax.Request":267,"../Network.HTTP.Affjax.Response":268,"../Partial.Unsafe":275,"../Prelude":278}],36:[function(require,module,exports){
+"use strict";
+
+var CryptoJS = require('crypto-js');
+
+exports.hmacSha3 = function(msg, key) {
+	var hmac  = CryptoJS.HmacSHA3(msg, key);
+	//console.log("bla");
+	//console.log(hmac.toString());
+	//console.log(CryptoJS.enc.Utf8.stringify(hmac));
+	return hmac.toString();
+}
+
+exports.setLocation = function(newLoc) {
+	window.location = newLoc;
+  return null;
+}
+
+exports.getAttr = function(attr) {
+    return function(ob) {
+        return function() {
+            return ob.attr(attr);
+        };
+    };
+};
+
+exports.toHex = function(str) {
+	var repr = parseInt(str, 16);
+	return repr.toString(16);
+}
+
+exports.fromHex = function(str) {
+	return CryptoJS.enc.Hex.parse(str);
+}
+
+exports.fromUtf8 = function(str) {
+	return CryptoJS.enc.Utf8.parse(str);
+}
+
+},{"crypto-js":9}],37:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
+var Control_Monad_Except = require("../Control.Monad.Except");
+var DOM = require("../DOM");
+var Data_Argonaut = require("../Data.Argonaut");
+var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
+var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
+var Data_Argonaut_Decode_Combinators = require("../Data.Argonaut.Decode.Combinators");
+var Data_Either = require("../Data.Either");
+var Data_Foreign = require("../Data.Foreign");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Prelude = require("../Prelude");
+var Welcome = (function () {
+    function Welcome(value0) {
+        this.value0 = value0;
+    };
+    Welcome.create = function (value0) {
+        return new Welcome(value0);
+    };
+    return Welcome;
+})();
+var Err = (function () {
+    function Err(value0) {
+        this.value0 = value0;
+    };
+    Err.create = function (value0) {
+        return new Err(value0);
+    };
+    return Err;
+})();
+var Login = (function () {
+    function Login() {
+
+    };
+    Login.value = new Login();
+    return Login;
+})();
+var Activate = (function () {
+    function Activate() {
+
+    };
+    Activate.value = new Activate();
+    return Activate;
+})();
+var Challenge = (function () {
+    function Challenge(value0) {
+        this.value0 = value0;
+    };
+    Challenge.create = function (value0) {
+        return new Challenge(value0);
+    };
+    return Challenge;
+})();
+var progress = function (s) {
+    return Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.setText(s))(Control_Monad_Eff_JQuery.select("#progress"));
+};
+var fromForeign = function (f) {
+    var v = Control_Monad_Except.runExcept(Data_Foreign.readString(f));
+    if (v instanceof Data_Either.Left) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Data_Either.Right) {
+        return new Data_Maybe.Just(v.value0);
+    };
+    throw new Error("Failed pattern match at Common line 77, column 17 - line 79, column 20: " + [ v.constructor.name ]);
+};
+var fail = function (v) {
+    return function (s) {
+        if (v instanceof Login) {
+            return function __do() {
+                progress(s)();
+                var v1 = Data_Functor.map(Control_Monad_Eff.functorEff)(Control_Monad_Eff_JQuery.setProp("disabled")(false))(Control_Monad_Eff_JQuery.select(".login input"))();
+                return Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.display)(Control_Monad_Eff_JQuery.select("#login"))();
+            };
+        };
+        if (v instanceof Activate) {
+            return function __do() {
+                progress(s)();
+                var v1 = Data_Functor.map(Control_Monad_Eff.functorEff)(Control_Monad_Eff_JQuery.setProp("disabled")(false))(Control_Monad_Eff_JQuery.select(".activate input"))();
+                return Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.display)(Control_Monad_Eff_JQuery.select("#activate"))();
+            };
+        };
+        throw new Error("Failed pattern match at Common line 35, column 1 - line 39, column 1: " + [ v.constructor.name, s.constructor.name ]);
+    };
+};
+var decodeJsonWelcome = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
+    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeStrMap(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(function (v) {
+        return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("welcome"))(function (v1) {
+            return Control_Applicative.pure(Data_Either.applicativeEither)(new Welcome({
+                link: v1
+            }));
+        });
+    });
+});
+var decodeJsonErr = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
+    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeStrMap(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(function (v) {
+        return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("error"))(function (v1) {
+            return Control_Applicative.pure(Data_Either.applicativeEither)(new Err({
+                err: v1
+            }));
+        });
+    });
+});
+var welcome = function (j) {
+    return function (elem) {
+        var eitherWelcome = Data_Argonaut_Decode_Class.decodeJson(decodeJsonWelcome)(j);
+        if (eitherWelcome instanceof Data_Either.Left) {
+            var eitherErr = Data_Argonaut_Decode_Class.decodeJson(decodeJsonErr)(j);
+            return Data_Either.either(fail(elem))(function (v) {
+                return fail(elem)(v.value0.err);
+            })(eitherErr);
+        };
+        if (eitherWelcome instanceof Data_Either.Right) {
+            return function __do() {
+                progress("Welcome!")();
+                return $foreign.setLocation(eitherWelcome.value0.value0.link)();
+            };
+        };
+        throw new Error("Failed pattern match at Common line 22, column 3 - line 28, column 28: " + [ eitherWelcome.constructor.name ]);
+    };
+};
+var decodeJsonChallenge = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
+    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeStrMap(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(function (v) {
+        return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("salt"))(function (v1) {
+            return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Combinators.getField(Data_Argonaut_Decode_Class.decodeJsonString)(v)("token"))(function (v2) {
+                return Control_Applicative.pure(Data_Either.applicativeEither)(new Challenge({
+                    salt: v1, 
+                    token: v2
+                }));
+            });
+        });
+    });
+});
+module.exports = {
+    Challenge: Challenge, 
+    Login: Login, 
+    Activate: Activate, 
+    Err: Err, 
+    Welcome: Welcome, 
+    fail: fail, 
+    fromForeign: fromForeign, 
+    progress: progress, 
+    welcome: welcome, 
+    decodeJsonChallenge: decodeJsonChallenge, 
+    decodeJsonWelcome: decodeJsonWelcome, 
+    decodeJsonErr: decodeJsonErr, 
+    fromHex: $foreign.fromHex, 
+    fromUtf8: $foreign.fromUtf8, 
+    getAttr: $foreign.getAttr, 
+    hmacSha3: $foreign.hmacSha3, 
+    setLocation: $foreign.setLocation, 
+    toHex: $foreign.toHex
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Eff":71,"../Control.Monad.Eff.JQuery":65,"../Control.Monad.Except":74,"../DOM":101,"../Data.Argonaut":115,"../Data.Argonaut.Decode":106,"../Data.Argonaut.Decode.Class":104,"../Data.Argonaut.Decode.Combinators":105,"../Data.Either":138,"../Data.Foreign":147,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Functor":157,"../Data.Maybe":204,"../Prelude":278,"./foreign":36}],38:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Functor = require("../Data.Functor");
+var Data_Semigroup = require("../Data.Semigroup");
+var Alt = function (Functor0, alt) {
+    this.Functor0 = Functor0;
+    this.alt = alt;
+};
+var altArray = new Alt(function () {
+    return Data_Functor.functorArray;
+}, Data_Semigroup.append(Data_Semigroup.semigroupArray));
+var alt = function (dict) {
+    return dict.alt;
+};
+module.exports = {
+    Alt: Alt, 
+    alt: alt, 
+    altArray: altArray
+};
+
+},{"../Data.Functor":157,"../Data.Semigroup":237}],39:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Plus = require("../Control.Plus");
+var Data_Functor = require("../Data.Functor");
+var Alternative = function (Applicative0, Plus1) {
+    this.Applicative0 = Applicative0;
+    this.Plus1 = Plus1;
+};
+var alternativeArray = new Alternative(function () {
+    return Control_Applicative.applicativeArray;
+}, function () {
+    return Control_Plus.plusArray;
+});
+module.exports = {
+    Alternative: Alternative, 
+    alternativeArray: alternativeArray
+};
+
+},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Plus":92,"../Data.Functor":157}],40:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Data_Functor = require("../Data.Functor");
+var Data_Unit = require("../Data.Unit");
+var Applicative = function (Apply0, pure) {
+    this.Apply0 = Apply0;
+    this.pure = pure;
+};
+var pure = function (dict) {
+    return dict.pure;
+};
+var unless = function (dictApplicative) {
+    return function (v) {
+        return function (v1) {
+            if (!v) {
+                return v1;
+            };
+            if (v) {
+                return pure(dictApplicative)(Data_Unit.unit);
+            };
+            throw new Error("Failed pattern match at Control.Applicative line 63, column 1 - line 63, column 19: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    };
+};
+var when = function (dictApplicative) {
+    return function (v) {
+        return function (v1) {
+            if (v) {
+                return v1;
+            };
+            if (!v) {
+                return pure(dictApplicative)(Data_Unit.unit);
+            };
+            throw new Error("Failed pattern match at Control.Applicative line 58, column 1 - line 58, column 16: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    };
+};
+var liftA1 = function (dictApplicative) {
+    return function (f) {
+        return function (a) {
+            return Control_Apply.apply(dictApplicative.Apply0())(pure(dictApplicative)(f))(a);
+        };
+    };
+};
+var applicativeFn = new Applicative(function () {
+    return Control_Apply.applyFn;
+}, function (x) {
+    return function (v) {
+        return x;
+    };
+});
+var applicativeArray = new Applicative(function () {
+    return Control_Apply.applyArray;
+}, function (x) {
+    return [ x ];
+});
+module.exports = {
+    Applicative: Applicative, 
+    liftA1: liftA1, 
+    pure: pure, 
+    unless: unless, 
+    when: when, 
+    applicativeFn: applicativeFn, 
+    applicativeArray: applicativeArray
+};
+
+},{"../Control.Apply":42,"../Data.Functor":157,"../Data.Unit":259}],41:[function(require,module,exports){
+"use strict";
+
+exports.arrayApply = function (fs) {
+  return function (xs) {
+    var result = [];
+    var n = 0;
+    for (var i = 0, l = fs.length; i < l; i++) {
+      for (var j = 0, k = xs.length; j < k; j++) {
+        result[n++] = fs[i](xs[j]);
+      }
+    }
+    return result;
+  };
+};
+
+},{}],42:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Category = require("../Control.Category");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Apply = function (Functor0, apply) {
+    this.Functor0 = Functor0;
+    this.apply = apply;
+};
+var applyFn = new Apply(function () {
+    return Data_Functor.functorFn;
+}, function (f) {
+    return function (g) {
+        return function (x) {
+            return f(x)(g(x));
+        };
+    };
+});
+var applyArray = new Apply(function () {
+    return Data_Functor.functorArray;
+}, $foreign.arrayApply);
+var apply = function (dict) {
+    return dict.apply;
+};
+var applyFirst = function (dictApply) {
+    return function (a) {
+        return function (b) {
+            return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Data_Function["const"])(a))(b);
+        };
+    };
+};
+var applySecond = function (dictApply) {
+    return function (a) {
+        return function (b) {
+            return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Data_Function["const"](Control_Category.id(Control_Category.categoryFn)))(a))(b);
+        };
+    };
+};
+var lift2 = function (dictApply) {
+    return function (f) {
+        return function (a) {
+            return function (b) {
+                return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b);
+            };
+        };
+    };
+};
+var lift3 = function (dictApply) {
+    return function (f) {
+        return function (a) {
+            return function (b) {
+                return function (c) {
+                    return apply(dictApply)(apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b))(c);
+                };
+            };
+        };
+    };
+};
+var lift4 = function (dictApply) {
+    return function (f) {
+        return function (a) {
+            return function (b) {
+                return function (c) {
+                    return function (d) {
+                        return apply(dictApply)(apply(dictApply)(apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b))(c))(d);
+                    };
+                };
+            };
+        };
+    };
+};
+var lift5 = function (dictApply) {
+    return function (f) {
+        return function (a) {
+            return function (b) {
+                return function (c) {
+                    return function (d) {
+                        return function (e) {
+                            return apply(dictApply)(apply(dictApply)(apply(dictApply)(apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b))(c))(d))(e);
+                        };
+                    };
+                };
+            };
+        };
+    };
+};
+module.exports = {
+    Apply: Apply, 
+    apply: apply, 
+    applyFirst: applyFirst, 
+    applySecond: applySecond, 
+    lift2: lift2, 
+    lift3: lift3, 
+    lift4: lift4, 
+    lift5: lift5, 
+    applyFn: applyFn, 
+    applyArray: applyArray
+};
+
+},{"../Control.Category":47,"../Data.Function":151,"../Data.Functor":157,"./foreign":41}],43:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Biapply = require("../Control.Biapply");
+var Biapplicative = function (Biapply0, bipure) {
+    this.Biapply0 = Biapply0;
+    this.bipure = bipure;
+};
+var bipure = function (dict) {
+    return dict.bipure;
+};
+module.exports = {
+    Biapplicative: Biapplicative, 
+    bipure: bipure
+};
+
+},{"../Control.Biapply":44}],44:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Function = require("../Data.Function");
+var Biapply = function (Bifunctor0, biapply) {
+    this.Bifunctor0 = Bifunctor0;
+    this.biapply = biapply;
+};
+var biapply = function (dict) {
+    return dict.biapply;
+};
+var biapplyFirst = function (dictBiapply) {
+    return function (a) {
+        return function (b) {
+            return biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(Data_Function["const"](Control_Category.id(Control_Category.categoryFn)))(Data_Function["const"](Control_Category.id(Control_Category.categoryFn))))(a))(b);
+        };
+    };
+};
+var biapplySecond = function (dictBiapply) {
+    return function (a) {
+        return function (b) {
+            return biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(Data_Function["const"])(Data_Function["const"]))(a))(b);
+        };
+    };
+};
+var bilift2 = function (dictBiapply) {
+    return function (f) {
+        return function (g) {
+            return function (a) {
+                return function (b) {
+                    return biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(f)(g))(a))(b);
+                };
+            };
+        };
+    };
+};
+var bilift3 = function (dictBiapply) {
+    return function (f) {
+        return function (g) {
+            return function (a) {
+                return function (b) {
+                    return function (c) {
+                        return biapply(dictBiapply)(biapply(dictBiapply)(Control_Category.id(Control_Category.categoryFn)(Data_Bifunctor.bimap(dictBiapply.Bifunctor0())(f)(g))(a))(b))(c);
+                    };
+                };
+            };
+        };
+    };
+};
+module.exports = {
+    Biapply: Biapply, 
+    biapply: biapply, 
+    biapplyFirst: biapplyFirst, 
+    biapplySecond: biapplySecond, 
+    bilift2: bilift2, 
+    bilift3: bilift3
+};
+
+},{"../Control.Category":47,"../Data.Bifunctor":128,"../Data.Function":151}],45:[function(require,module,exports){
+"use strict";
+
+exports.arrayBind = function (arr) {
+  return function (f) {
+    var result = [];
+    for (var i = 0, l = arr.length; i < l; i++) {
+      Array.prototype.push.apply(result, f(arr[i]));
+    }
+    return result;
+  };
+};
+
+},{}],46:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Unit = require("../Data.Unit");
+var Bind = function (Apply0, bind) {
+    this.Apply0 = Apply0;
+    this.bind = bind;
+};
+var Discard = function (discard) {
+    this.discard = discard;
+};
+var discard = function (dict) {
+    return dict.discard;
+};
+var bindFn = new Bind(function () {
+    return Control_Apply.applyFn;
+}, function (m) {
+    return function (f) {
+        return function (x) {
+            return f(m(x))(x);
+        };
+    };
+});
+var bindArray = new Bind(function () {
+    return Control_Apply.applyArray;
+}, $foreign.arrayBind);
+var bind = function (dict) {
+    return dict.bind;
+};
+var bindFlipped = function (dictBind) {
+    return Data_Function.flip(bind(dictBind));
+};
+var composeKleisliFlipped = function (dictBind) {
+    return function (f) {
+        return function (g) {
+            return function (a) {
+                return bindFlipped(dictBind)(f)(g(a));
+            };
+        };
+    };
+};
+var composeKleisli = function (dictBind) {
+    return function (f) {
+        return function (g) {
+            return function (a) {
+                return bind(dictBind)(f(a))(g);
+            };
+        };
+    };
+};
+var discardUnit = new Discard(function (dictBind) {
+    return bind(dictBind);
+});
+var ifM = function (dictBind) {
+    return function (cond) {
+        return function (t) {
+            return function (f) {
+                return bind(dictBind)(cond)(function (cond$prime) {
+                    if (cond$prime) {
+                        return t;
+                    };
+                    return f;
+                });
+            };
+        };
+    };
+};
+var join = function (dictBind) {
+    return function (m) {
+        return bind(dictBind)(m)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+module.exports = {
+    Bind: Bind, 
+    Discard: Discard, 
+    bind: bind, 
+    bindFlipped: bindFlipped, 
+    composeKleisli: composeKleisli, 
+    composeKleisliFlipped: composeKleisliFlipped, 
+    discard: discard, 
+    ifM: ifM, 
+    join: join, 
+    bindFn: bindFn, 
+    bindArray: bindArray, 
+    discardUnit: discardUnit
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Data.Function":151,"../Data.Functor":157,"../Data.Unit":259,"./foreign":45}],47:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Category = function (Semigroupoid0, id) {
+    this.Semigroupoid0 = Semigroupoid0;
+    this.id = id;
+};
+var id = function (dict) {
+    return dict.id;
+};
+var categoryFn = new Category(function () {
+    return Control_Semigroupoid.semigroupoidFn;
+}, function (x) {
+    return x;
+});
+module.exports = {
+    Category: Category, 
+    id: id, 
+    categoryFn: categoryFn
+};
+
+},{"../Control.Semigroupoid":93}],48:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Extend = require("../Control.Extend");
+var Data_Functor = require("../Data.Functor");
+var Comonad = function (Extend0, extract) {
+    this.Extend0 = Extend0;
+    this.extract = extract;
+};
+var extract = function (dict) {
+    return dict.extract;
+};
+module.exports = {
+    Comonad: Comonad, 
+    extract: extract
+};
+
+},{"../Control.Extend":50,"../Data.Functor":157}],49:[function(require,module,exports){
+"use strict";
+
+exports.arrayExtend = function(f) {
+  return function(xs) {
+    return xs.map(function (_, i, xs) {
+      return f(xs.slice(i));
+    });
+  };
+};
+
+},{}],50:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Category = require("../Control.Category");
+var Data_Functor = require("../Data.Functor");
+var Data_Semigroup = require("../Data.Semigroup");
+var Extend = function (Functor0, extend) {
+    this.Functor0 = Functor0;
+    this.extend = extend;
+};
+var extendFn = function (dictSemigroup) {
+    return new Extend(function () {
+        return Data_Functor.functorFn;
+    }, function (f) {
+        return function (g) {
+            return function (w) {
+                return f(function (w$prime) {
+                    return g(Data_Semigroup.append(dictSemigroup)(w)(w$prime));
+                });
+            };
+        };
+    });
+};
+var extendArray = new Extend(function () {
+    return Data_Functor.functorArray;
+}, $foreign.arrayExtend);
+var extend = function (dict) {
+    return dict.extend;
+};
+var extendFlipped = function (dictExtend) {
+    return function (w) {
+        return function (f) {
+            return extend(dictExtend)(f)(w);
+        };
+    };
+};
+var duplicate = function (dictExtend) {
+    return extend(dictExtend)(Control_Category.id(Control_Category.categoryFn));
+};
+var composeCoKleisliFlipped = function (dictExtend) {
+    return function (f) {
+        return function (g) {
+            return function (w) {
+                return f(extend(dictExtend)(g)(w));
+            };
+        };
+    };
+};
+var composeCoKleisli = function (dictExtend) {
+    return function (f) {
+        return function (g) {
+            return function (w) {
+                return g(extend(dictExtend)(f)(w));
+            };
+        };
+    };
+};
+module.exports = {
+    Extend: Extend, 
+    composeCoKleisli: composeCoKleisli, 
+    composeCoKleisliFlipped: composeCoKleisliFlipped, 
+    duplicate: duplicate, 
+    extend: extend, 
+    extendFlipped: extendFlipped, 
+    extendFn: extendFn, 
+    extendArray: extendArray
+};
+
+},{"../Control.Category":47,"../Data.Functor":157,"../Data.Semigroup":237,"./foreign":49}],51:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Unit = require("../Data.Unit");
+var Lazy = function (defer) {
+    this.defer = defer;
+};
+var lazyUnit = new Lazy(function (v) {
+    return Data_Unit.unit;
+});
+var lazyFn = new Lazy(function (f) {
+    return function (x) {
+        return f(Data_Unit.unit)(x);
+    };
+});
+var defer = function (dict) {
+    return dict.defer;
+};
+var fix = function (dictLazy) {
+    return function (f) {
+        return defer(dictLazy)(function (v) {
+            return f(fix(dictLazy)(f));
+        });
+    };
+};
+module.exports = {
+    Lazy: Lazy, 
+    defer: defer, 
+    fix: fix, 
+    lazyFn: lazyFn, 
+    lazyUnit: lazyUnit
+};
+
+},{"../Data.Unit":259}],52:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Aff = require("../Control.Monad.Aff");
+var Control_Monad_Aff_Internal = require("../Control.Monad.Aff.Internal");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Maybe = require("../Data.Maybe");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var fromAVBox = Unsafe_Coerce.unsafeCoerce;
+var killVar = function (q) {
+    return function (e) {
+        return fromAVBox(Control_Monad_Aff_Internal._killVar(Control_Monad_Aff.nonCanceler, q, e));
+    };
+};
+var makeVar = fromAVBox(Control_Monad_Aff_Internal._makeVar(Control_Monad_Aff.nonCanceler));
+var peekVar = function (q) {
+    return fromAVBox(Control_Monad_Aff_Internal._peekVar(Control_Monad_Aff.nonCanceler, q));
+};
+var putVar = function (q) {
+    return function (a) {
+        return fromAVBox(Control_Monad_Aff_Internal._putVar(Control_Monad_Aff.nonCanceler, q, a));
+    };
+};
+var makeVar$prime = function (a) {
+    return Control_Bind.bind(Control_Monad_Aff.bindAff)(makeVar)(function (v) {
+        return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(putVar(v)(a))(function () {
+            return Control_Applicative.pure(Control_Monad_Aff.applicativeAff)(v);
+        });
+    });
+};
+var takeVar = function (q) {
+    return fromAVBox(Control_Monad_Aff_Internal._takeVar(Control_Monad_Aff.nonCanceler, q));
+};
+var modifyVar = function (f) {
+    return function (v) {
+        return Control_Bind.bind(Control_Monad_Aff.bindAff)(takeVar(v))(function ($2) {
+            return putVar(v)(f($2));
+        });
+    };
+};
+var tryPeekVar = function (q) {
+    return fromAVBox(Control_Monad_Aff_Internal._tryPeekVar(Data_Maybe.Nothing.value, Data_Maybe.Just.create, Control_Monad_Aff.nonCanceler, q));
+};
+var tryTakeVar = function (q) {
+    return fromAVBox(Control_Monad_Aff_Internal._tryTakeVar(Data_Maybe.Nothing.value, Data_Maybe.Just.create, Control_Monad_Aff.nonCanceler, q));
+};
+module.exports = {
+    killVar: killVar, 
+    makeVar: makeVar, 
+    "makeVar'": makeVar$prime, 
+    modifyVar: modifyVar, 
+    peekVar: peekVar, 
+    putVar: putVar, 
+    takeVar: takeVar, 
+    tryPeekVar: tryPeekVar, 
+    tryTakeVar: tryTakeVar
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":56,"../Control.Monad.Aff.Internal":54,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Exception":63,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Maybe":204,"../Prelude":278,"../Unsafe.Coerce":282}],53:[function(require,module,exports){
+"use strict";
+
+exports._makeVar = function (nonCanceler) {
+  return function (success) {
+    success({
+      consumers: [],
+      producers: [],
+      error: undefined
+    });
+    return nonCanceler;
+  };
+};
+
+exports._takeVar = function (nonCanceler, avar) {
+  return function (success, error) {
+    if (avar.error !== undefined) {
+      error(avar.error);
+    } else if (avar.producers.length > 0) {
+      avar.producers.shift()(success, error);
+    } else {
+      avar.consumers.push({ peek: false, success: success, error: error });
+    }
+
+    return nonCanceler;
+  };
+};
+
+exports._tryTakeVar = function (nothing, just, nonCanceler, avar) {
+  return function (success, error) {
+    if (avar.error !== undefined) {
+      error(avar.error);
+    } else if (avar.producers.length > 0) {
+      avar.producers.shift()(function (x) {
+        return success(just(x));
+      }, error);
+    } else {
+      success(nothing);
+    }
+    return nonCanceler;
+  };
+};
+
+exports._peekVar = function (nonCanceler, avar) {
+  return function (success, error) {
+    if (avar.error !== undefined) {
+      error(avar.error);
+    } else if (avar.producers.length > 0) {
+      avar.producers[0](success, error);
+    } else {
+      avar.consumers.push({ peek: true, success: success, error: error });
+    }
+    return nonCanceler;
+  };
+};
+
+exports._tryPeekVar = function (nothing, just, nonCanceler, avar) {
+  return function (success, error) {
+    if (avar.error !== undefined) {
+      error(avar.error);
+    } else if (avar.producers.length > 0) {
+      avar.producers[0](function (x) {
+        return success(just(x));
+      }, error);
+    } else {
+      success(nothing);
+    }
+    return nonCanceler;
+  };
+};
+
+exports._putVar = function (nonCanceler, avar, a) {
+  return function (success, error) {
+    if (avar.error !== undefined) {
+      error(avar.error);
+    } else {
+      var shouldQueue = true;
+      var consumers = [];
+      var consumer;
+
+      while (true) {
+        consumer = avar.consumers.shift();
+        if (consumer) {
+          consumers.push(consumer);
+          if (consumer.peek) {
+            continue;
+          } else {
+            shouldQueue = false;
+          }
+        }
+        break;
+      }
+
+      if (shouldQueue) {
+        avar.producers.push(function (success) {
+          success(a);
+          return nonCanceler;
+        });
+      }
+
+      for (var i = 0; i < consumers.length; i++) {
+        consumers[i].success(a);
+      }
+
+      success({});
+    }
+
+    return nonCanceler;
+  };
+};
+
+exports._killVar = function (nonCanceler, avar, e) {
+  return function (success, error) {
+    if (avar.error !== undefined) {
+      error(avar.error);
+    } else {
+      avar.error = e;
+      while (avar.consumers.length) {
+        avar.consumers.shift().error(e);
+      }
+      success({});
+    }
+
+    return nonCanceler;
+  };
+};
+
+},{}],54:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Maybe = require("../Data.Maybe");
+var Prelude = require("../Prelude");
+module.exports = {
+    _killVar: $foreign._killVar, 
+    _makeVar: $foreign._makeVar, 
+    _peekVar: $foreign._peekVar, 
+    _putVar: $foreign._putVar, 
+    _takeVar: $foreign._takeVar, 
+    _tryPeekVar: $foreign._tryPeekVar, 
+    _tryTakeVar: $foreign._tryTakeVar
+};
+
+},{"../Control.Monad.Eff.Exception":63,"../Data.Function.Uncurried":150,"../Data.Maybe":204,"../Prelude":278,"./foreign":53}],55:[function(require,module,exports){
+/* globals setTimeout, clearTimeout, setImmediate, clearImmediate */
+"use strict";
+
+exports._cancelWith = function (nonCanceler, aff, canceler1) {
+  return function (success, error) {
+    var canceler2 = aff(success, error);
+
+    return function (e) {
+      return function (success, error) {
+        var cancellations = 0;
+        var result = false;
+        var errored = false;
+
+        var s = function (bool) {
+          cancellations = cancellations + 1;
+          result = result || bool;
+
+          if (cancellations === 2 && !errored) {
+            success(result);
+          }
+        };
+
+        var f = function (err) {
+          if (!errored) {
+            errored = true;
+            error(err);
+          }
+        };
+
+        canceler2(e)(s, f);
+        canceler1(e)(s, f);
+
+        return nonCanceler;
+      };
+    };
+  };
+};
+
+exports._delay = function (nonCanceler, millis) {
+  var set = setTimeout;
+  var clear = clearTimeout;
+  if (millis <= 0 && typeof setImmediate === "function") {
+    set = setImmediate;
+    clear = clearImmediate;
+  }
+  return function (success) {
+    var timedOut = false;
+    var timer = set(function () {
+      timedOut = true;
+      success();
+    }, millis);
+
+    return function () {
+      return function (s) {
+        if (timedOut) {
+          s(false);
+        } else {
+          clear(timer);
+          s(true);
+        }
+        return nonCanceler;
+      };
+    };
+  };
+};
+
+exports._unsafeInterleaveAff = function (aff) {
+  return aff;
+};
+
+exports._forkAff = function (nonCanceler, aff) {
+  var voidF = function () {};
+
+  return function (success) {
+    var canceler = aff(voidF, voidF);
+    success(canceler);
+    return nonCanceler;
+  };
+};
+
+exports._forkAll = function (nonCanceler, foldl, affs) {
+  var voidF = function () {};
+
+  return function (success) {
+    var cancelers = foldl(function (acc) {
+      return function (aff) {
+        acc.push(aff(voidF, voidF));
+        return acc;
+      };
+    })([])(affs);
+
+    var canceler = function (e) {
+      return function (success, error) {
+        var cancellations = 0;
+        var result        = false;
+        var errored       = false;
+
+        var s = function (bool) {
+          cancellations = cancellations + 1;
+          result        = result || bool;
+
+          if (cancellations === cancelers.length && !errored) {
+            success(result);
+          }
+        };
+
+        var f = function (err) {
+          if (!errored) {
+            errored = true;
+            error(err);
+          }
+        };
+
+        for (var i = 0; i < cancelers.length; i++) {
+          cancelers[i](e)(s, f);
+        }
+
+        return nonCanceler;
+      };
+    };
+
+    success(canceler);
+    return nonCanceler;
+  };
+};
+
+exports._makeAff = function (cb) {
+  return function (success, error) {
+    try {
+      return cb(function (e) {
+        return function () {
+          error(e);
+        };
+      })(function (v) {
+        return function () {
+          success(v);
+        };
+      })();
+    } catch (err) {
+      error(err);
+    }
+  };
+};
+
+exports._pure = function (nonCanceler, v) {
+  return function (success) {
+    success(v);
+    return nonCanceler;
+  };
+};
+
+exports._throwError = function (nonCanceler, e) {
+  return function (success, error) {
+    error(e);
+    return nonCanceler;
+  };
+};
+
+exports._fmap = function (f, aff) {
+  return function (success, error) {
+    return aff(function (v) {
+      success(f(v));
+    }, error);
+  };
+};
+
+exports._bind = function (alwaysCanceler, aff, f) {
+  return function (success, error) {
+    var canceler1, canceler2;
+
+    var isCanceled    = false;
+    var requestCancel = false;
+
+    var onCanceler = function () {};
+
+    canceler1 = aff(function (v) {
+      if (requestCancel) {
+        isCanceled = true;
+
+        return alwaysCanceler;
+      } else {
+        canceler2 = f(v)(success, error);
+
+        onCanceler(canceler2);
+
+        return canceler2;
+      }
+    }, error);
+
+    return function (e) {
+      return function (s, f) {
+        requestCancel = true;
+
+        if (canceler2 !== undefined) {
+          return canceler2(e)(s, f);
+        } else {
+          return canceler1(e)(function (bool) {
+            if (bool || isCanceled) {
+              s(true);
+            } else {
+              onCanceler = function (canceler) {
+                canceler(e)(s, f);
+              };
+            }
+          }, f);
+        }
+      };
+    };
+  };
+};
+
+exports._attempt = function (Left, Right, aff) {
+  return function (success) {
+    return aff(function (v) {
+      success(Right(v));
+    }, function (e) {
+      success(Left(e));
+    });
+  };
+};
+
+exports._runAff = function (errorT, successT, aff) {
+  // If errorT or successT throw, and an Aff is comprised only of synchronous
+  // effects, then it's possible for makeAff/liftEff to accidentally catch
+  // it, which may end up rerunning the Aff depending on error recovery
+  // behavior. To mitigate this, we observe synchronicity using mutation. If
+  // an Aff is observed to be synchronous, we let the stack reset and run the
+  // handlers outside of the normal callback flow.
+  return function () {
+    var status = 0;
+    var result, success;
+
+    var canceler = aff(function (v) {
+      if (status === 2) {
+        successT(v)();
+      } else {
+        status = 1;
+        result = v;
+        success = true;
+      }
+    }, function (e) {
+      if (status === 2) {
+        errorT(e)();
+      } else {
+        status = 1;
+        result = e;
+        success = false;
+      }
+    });
+
+    if (status === 1) {
+      if (success) {
+        successT(result)();
+      } else {
+        errorT(result)();
+      }
+    } else {
+      status = 2;
+    }
+
+    return canceler;
+  };
+};
+
+exports._liftEff = function (nonCanceler, e) {
+  return function (success, error) {
+    var result;
+    try {
+      result = e();
+    } catch (err) {
+      error(err);
+      return nonCanceler;
+    }
+
+    success(result);
+    return nonCanceler;
+  };
+};
+
+exports._tailRecM = function (isLeft, f, a) {
+  return function (success, error) {
+    return function go (acc) {
+      var result, status, canceler;
+
+      // Observes synchronous effects using a flag.
+      //   status = 0 (unresolved status)
+      //   status = 1 (synchronous effect)
+      //   status = 2 (asynchronous effect)
+
+      var csuccess = function (v) {
+        // If the status is still unresolved, we have observed a
+        // synchronous effect. Otherwise, the status will be `2`.
+        if (status === 0) {
+          // Store the result for further synchronous processing.
+          result = v;
+          status = 1;
+        } else {
+          // When we have observed an asynchronous effect, we use normal
+          // recursion. This is safe because we will be on a new stack.
+          if (isLeft(v)) {
+            go(v.value0);
+          } else {
+            success(v.value0);
+          }
+        }
+      };
+
+      while (true) {
+        status = 0;
+        canceler = f(acc)(csuccess, error);
+
+        // If the status has already resolved to `1` by our Aff handler, then
+        // we have observed a synchronous effect. Otherwise it will still be
+        // `0`.
+        if (status === 1) {
+          // When we have observed a synchronous effect, we merely swap out the
+          // accumulator and continue the loop, preserving stack.
+          if (isLeft(result)) {
+            acc = result.value0;
+            continue;
+          } else {
+            success(result.value0);
+          }
+        } else {
+          // If the status has not resolved yet, then we have observed an
+          // asynchronous effect.
+          status = 2;
+        }
+        return canceler;
+      }
+
+    }(a);
+  };
+};
+
+},{}],56:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Aff_Internal = require("../Control.Monad.Aff.Internal");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Parallel = require("../Control.Parallel");
+var Control_Parallel_Class = require("../Control.Parallel.Class");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Time_Duration = require("../Data.Time.Duration");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var ParAff = function (x) {
+    return x;
+};
+var Canceler = function (x) {
+    return x;
+};
+var runAff = function (ex) {
+    return function (f) {
+        return function (aff) {
+            return $foreign._runAff(ex, f, aff);
+        };
+    };
+};
+var newtypeParAff = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, ParAff);
+var makeAff$prime = function (h) {
+    return $foreign._makeAff(h);
+};
+var functorAff = new Data_Functor.Functor(function (f) {
+    return function (fa) {
+        return $foreign._fmap(f, fa);
+    };
+});
+var functorParAff = functorAff;
+var fromAVBox = Unsafe_Coerce.unsafeCoerce;
+var cancel = function (v) {
+    return v;
+};
+var launchAff = (function () {
+    var lowerEx = Data_Functor.map(Control_Monad_Eff.functorEff)(function ($54) {
+        return Canceler(Data_Functor.map(Data_Functor.functorFn)($foreign._unsafeInterleaveAff)(cancel($54)));
+    });
+    return function ($55) {
+        return lowerEx(runAff(Control_Monad_Eff_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Control_Monad_Eff.applicativeEff)(Data_Unit.unit)))($foreign._unsafeInterleaveAff($55)));
+    };
+})();
+var attempt = function (aff) {
+    return $foreign._attempt(Data_Either.Left.create, Data_Either.Right.create, aff);
+};
+var apathize = function (a) {
+    return Data_Functor.map(functorAff)(Data_Function["const"](Data_Unit.unit))(attempt(a));
+};
+var applyAff = new Control_Apply.Apply(function () {
+    return functorAff;
+}, function (ff) {
+    return function (fa) {
+        return $foreign._bind(alwaysCanceler, ff, function (f) {
+            return Data_Functor.map(functorAff)(f)(fa);
+        });
+    };
+});
+var applicativeAff = new Control_Applicative.Applicative(function () {
+    return applyAff;
+}, function (v) {
+    return $foreign._pure(nonCanceler, v);
+});
+var nonCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(false));
+var alwaysCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(true));
+var cancelWith = function (aff) {
+    return function (c) {
+        return $foreign._cancelWith(nonCanceler, aff, c);
+    };
+};
+var delay = function (v) {
+    return $foreign._delay(nonCanceler, v);
+};
+var forkAff = function (aff) {
+    return $foreign._forkAff(nonCanceler, aff);
+};
+var forkAll = function (dictFoldable) {
+    return function (affs) {
+        return $foreign._forkAll(nonCanceler, Data_Foldable.foldl(dictFoldable), affs);
+    };
+};
+var killVar = function (q) {
+    return function (e) {
+        return fromAVBox(Control_Monad_Aff_Internal._killVar(nonCanceler, q, e));
+    };
+};
+var liftEff$prime = function (eff) {
+    return attempt($foreign._unsafeInterleaveAff($foreign._liftEff(nonCanceler, eff)));
+};
+var makeAff = function (h) {
+    return makeAff$prime(function (e) {
+        return function (a) {
+            return Data_Functor.map(Control_Monad_Eff.functorEff)(Data_Function["const"](nonCanceler))(h(e)(a));
+        };
+    });
+};
+var makeVar = fromAVBox(Control_Monad_Aff_Internal._makeVar(nonCanceler));
+var putVar = function (q) {
+    return function (a) {
+        return fromAVBox(Control_Monad_Aff_Internal._putVar(nonCanceler, q, a));
+    };
+};
+var takeVar = function (q) {
+    return fromAVBox(Control_Monad_Aff_Internal._takeVar(nonCanceler, q));
+};
+var semigroupAff = function (dictSemigroup) {
+    return new Data_Semigroup.Semigroup(function (a) {
+        return function (b) {
+            return Control_Apply.apply(applyAff)(Data_Functor.map(functorAff)(Data_Semigroup.append(dictSemigroup))(a))(b);
+        };
+    });
+};
+var monoidAff = function (dictMonoid) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupAff(dictMonoid.Semigroup0());
+    }, Control_Applicative.pure(applicativeAff)(Data_Monoid.mempty(dictMonoid)));
+};
+var semigroupCanceler = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        return function (e) {
+            return Control_Apply.apply(applyAff)(Data_Functor.map(functorAff)(Data_HeytingAlgebra.disj(Data_HeytingAlgebra.heytingAlgebraBoolean))(v(e)))(v1(e));
+        };
+    };
+});
+var monoidCanceler = new Data_Monoid.Monoid(function () {
+    return semigroupCanceler;
+}, Data_Function["const"](Control_Applicative.pure(applicativeAff)(true)));
+var bindAff = new Control_Bind.Bind(function () {
+    return applyAff;
+}, function (fa) {
+    return function (f) {
+        return $foreign._bind(alwaysCanceler, fa, f);
+    };
+});
+var applyParAff = new Control_Apply.Apply(function () {
+    return functorParAff;
+}, function (v) {
+    return function (v1) {
+        var putOrKill = function (v2) {
+            return Data_Either.either(killVar(v2))(putVar(v2));
+        };
+        return Control_Bind.bind(bindAff)(makeVar)(function (v2) {
+            return Control_Bind.bind(bindAff)(makeVar)(function (v3) {
+                return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(putOrKill(v2))(attempt(v))))(function (v4) {
+                    return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(putOrKill(v3))(attempt(v1))))(function (v5) {
+                        return cancelWith(Control_Apply.apply(applyAff)(takeVar(v2))(takeVar(v3)))(Data_Semigroup.append(semigroupCanceler)(v4)(v5));
+                    });
+                });
+            });
+        });
+    };
+});
+var applicativeParAff = new Control_Applicative.Applicative(function () {
+    return applyParAff;
+}, function ($56) {
+    return ParAff(Control_Applicative.pure(applicativeAff)($56));
+});
+var semigroupParAff = function (dictSemigroup) {
+    return new Data_Semigroup.Semigroup(function (a) {
+        return function (b) {
+            return Control_Apply.apply(applyParAff)(Data_Functor.map(functorParAff)(Data_Semigroup.append(dictSemigroup))(a))(b);
+        };
+    });
+};
+var monoidParAff = function (dictMonoid) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupParAff(dictMonoid.Semigroup0());
+    }, Control_Applicative.pure(applicativeParAff)(Data_Monoid.mempty(dictMonoid)));
+};
+var monadAff = new Control_Monad.Monad(function () {
+    return applicativeAff;
+}, function () {
+    return bindAff;
+});
+var monadEffAff = new Control_Monad_Eff_Class.MonadEff(function () {
+    return monadAff;
+}, function (eff) {
+    return $foreign._liftEff(nonCanceler, eff);
+});
+var monadRecAff = new Control_Monad_Rec_Class.MonadRec(function () {
+    return monadAff;
+}, function (f) {
+    return function (a) {
+        var isLoop = function (v) {
+            if (v instanceof Control_Monad_Rec_Class.Loop) {
+                return true;
+            };
+            return false;
+        };
+        return $foreign._tailRecM(isLoop, f, a);
+    };
+});
+var monadThrowAff = new Control_Monad_Error_Class.MonadThrow(function () {
+    return monadAff;
+}, function (e) {
+    return $foreign._throwError(nonCanceler, e);
+});
+var $$finally = function (aff1) {
+    return function (aff2) {
+        return Control_Bind.bind(bindAff)(attempt(aff1))(function (v) {
+            return Control_Bind.bind(bindAff)(aff2)(function (v1) {
+                return Data_Either.either(Control_Monad_Error_Class.throwError(monadThrowAff))(Control_Applicative.pure(applicativeAff))(v);
+            });
+        });
+    };
+};
+var parallelParAff = new Control_Parallel_Class.Parallel(function () {
+    return applicativeParAff;
+}, function () {
+    return monadAff;
+}, ParAff, function (v) {
+    return v;
+});
+var monadErrorAff = new Control_Monad_Error_Class.MonadError(function () {
+    return monadThrowAff;
+}, function (aff) {
+    return function (ex) {
+        return Control_Bind.bind(bindAff)(attempt(aff))(Data_Either.either(ex)(Control_Applicative.pure(applicativeAff)));
+    };
+});
+var altParAff = new Control_Alt.Alt(function () {
+    return functorParAff;
+}, function (v) {
+    return function (v1) {
+        var maybeKill = function (va) {
+            return function (ve) {
+                return function (err) {
+                    return Control_Bind.bind(bindAff)(takeVar(ve))(function (v2) {
+                        return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(Control_Applicative.when(applicativeAff)(v2 === 1)(killVar(va)(err)))(function () {
+                            return putVar(ve)(v2 + 1 | 0);
+                        });
+                    });
+                };
+            };
+        };
+        var done = function (cs) {
+            return function (get) {
+                return function (va) {
+                    return function (x) {
+                        return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(putVar(va)(x))(function () {
+                            return Control_Bind.bind(bindAff)(Data_Functor.map(functorAff)(get)(takeVar(cs)))(function (v2) {
+                                return Data_Functor["void"](functorAff)(cancel(v2)(Control_Monad_Eff_Exception.error("Alt early exit")));
+                            });
+                        });
+                    };
+                };
+            };
+        };
+        return Control_Bind.bind(bindAff)(makeVar)(function (v2) {
+            return Control_Bind.bind(bindAff)(makeVar)(function (v3) {
+                return Control_Bind.bind(bindAff)(makeVar)(function (v4) {
+                    return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(putVar(v3)(0))(function () {
+                        return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(Data_Either.either(maybeKill(v2)(v3))(done(v4)(Data_Tuple.snd)(v2)))(attempt(v))))(function (v5) {
+                            return Control_Bind.bind(bindAff)(forkAff(Control_Bind.bindFlipped(bindAff)(Data_Either.either(maybeKill(v2)(v3))(done(v4)(Data_Tuple.fst)(v2)))(attempt(v1))))(function (v6) {
+                                return Control_Bind.discard(Control_Bind.discardUnit)(bindAff)(putVar(v4)(new Data_Tuple.Tuple(v5, v6)))(function () {
+                                    return cancelWith(takeVar(v2))(Data_Semigroup.append(semigroupCanceler)(v5)(v6));
+                                });
+                            });
+                        });
+                    });
+                });
+            });
+        });
+    };
+});
+var altAff = new Control_Alt.Alt(function () {
+    return functorAff;
+}, function (a1) {
+    return function (a2) {
+        return Control_Bind.bind(bindAff)(attempt(a1))(Data_Either.either(Data_Function["const"](a2))(Control_Applicative.pure(applicativeAff)));
+    };
+});
+var plusAff = new Control_Plus.Plus(function () {
+    return altAff;
+}, Control_Monad_Error_Class.throwError(monadThrowAff)(Control_Monad_Eff_Exception.error("Always fails")));
+var alternativeAff = new Control_Alternative.Alternative(function () {
+    return applicativeAff;
+}, function () {
+    return plusAff;
+});
+var monadZero = new Control_MonadZero.MonadZero(function () {
+    return alternativeAff;
+}, function () {
+    return monadAff;
+});
+var monadPlusAff = new Control_MonadPlus.MonadPlus(function () {
+    return monadZero;
+});
+var plusParAff = new Control_Plus.Plus(function () {
+    return altParAff;
+}, Control_Plus.empty(plusAff));
+var alternativeParAff = new Control_Alternative.Alternative(function () {
+    return applicativeParAff;
+}, function () {
+    return plusParAff;
+});
+module.exports = {
+    Canceler: Canceler, 
+    ParAff: ParAff, 
+    apathize: apathize, 
+    attempt: attempt, 
+    cancel: cancel, 
+    cancelWith: cancelWith, 
+    delay: delay, 
+    "finally": $$finally, 
+    forkAff: forkAff, 
+    forkAll: forkAll, 
+    launchAff: launchAff, 
+    "liftEff'": liftEff$prime, 
+    makeAff: makeAff, 
+    "makeAff'": makeAff$prime, 
+    nonCanceler: nonCanceler, 
+    runAff: runAff, 
+    semigroupAff: semigroupAff, 
+    monoidAff: monoidAff, 
+    functorAff: functorAff, 
+    applyAff: applyAff, 
+    applicativeAff: applicativeAff, 
+    bindAff: bindAff, 
+    monadAff: monadAff, 
+    monadEffAff: monadEffAff, 
+    monadThrowAff: monadThrowAff, 
+    monadErrorAff: monadErrorAff, 
+    altAff: altAff, 
+    plusAff: plusAff, 
+    alternativeAff: alternativeAff, 
+    monadZero: monadZero, 
+    monadPlusAff: monadPlusAff, 
+    monadRecAff: monadRecAff, 
+    semigroupCanceler: semigroupCanceler, 
+    monoidCanceler: monoidCanceler, 
+    newtypeParAff: newtypeParAff, 
+    semigroupParAff: semigroupParAff, 
+    monoidParAff: monoidParAff, 
+    functorParAff: functorParAff, 
+    applyParAff: applyParAff, 
+    applicativeParAff: applicativeParAff, 
+    altParAff: altParAff, 
+    plusParAff: plusParAff, 
+    alternativeParAff: alternativeParAff, 
+    parallelParAff: parallelParAff
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Control.Monad.Aff.Internal":54,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Class":59,"../Control.Monad.Eff.Exception":63,"../Control.Monad.Error.Class":72,"../Control.Monad.Rec.Class":78,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Parallel":91,"../Control.Parallel.Class":90,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Time.Duration":250,"../Data.Tuple":255,"../Data.Unit":259,"../Prelude":278,"../Unsafe.Coerce":282,"./foreign":55}],57:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Prelude = require("../Prelude");
+var MonadCont = function (Monad0, callCC) {
+    this.Monad0 = Monad0;
+    this.callCC = callCC;
+};
+var callCC = function (dict) {
+    return dict.callCC;
+};
+module.exports = {
+    MonadCont: MonadCont, 
+    callCC: callCC
+};
+
+},{"../Prelude":278}],58:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Newtype = require("../Data.Newtype");
+var Prelude = require("../Prelude");
+var ContT = function (x) {
+    return x;
+};
+var withContT = function (f) {
+    return function (v) {
+        return function (k) {
+            return v(f(k));
+        };
+    };
+};
+var runContT = function (v) {
+    return function (k) {
+        return v(k);
+    };
+};
+var newtypeContT = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, ContT);
+var monadTransContT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
+    return function (m) {
+        return function (k) {
+            return Control_Bind.bind(dictMonad.Bind1())(m)(k);
+        };
+    };
+});
+var mapContT = function (f) {
+    return function (v) {
+        return function (k) {
+            return f(v(k));
+        };
+    };
+};
+var functorContT = function (dictFunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return function (v) {
+            return function (k) {
+                return v(function (a) {
+                    return k(f(a));
+                });
+            };
+        };
+    });
+};
+var applyContT = function (dictApply) {
+    return new Control_Apply.Apply(function () {
+        return functorContT(dictApply.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return function (k) {
+                return v(function (g) {
+                    return v1(function (a) {
+                        return k(g(a));
+                    });
+                });
+            };
+        };
+    });
+};
+var bindContT = function (dictBind) {
+    return new Control_Bind.Bind(function () {
+        return applyContT(dictBind.Apply0());
+    }, function (v) {
+        return function (k) {
+            return function (k$prime) {
+                return v(function (a) {
+                    var v1 = k(a);
+                    return v1(k$prime);
+                });
+            };
+        };
+    });
+};
+var applicativeContT = function (dictApplicative) {
+    return new Control_Applicative.Applicative(function () {
+        return applyContT(dictApplicative.Apply0());
+    }, function (a) {
+        return function (k) {
+            return k(a);
+        };
+    });
+};
+var monadContT = function (dictMonad) {
+    return new Control_Monad.Monad(function () {
+        return applicativeContT(dictMonad.Applicative0());
+    }, function () {
+        return bindContT(dictMonad.Bind1());
+    });
+};
+var monadAskContT = function (dictMonadAsk) {
+    return new Control_Monad_Reader_Class.MonadAsk(function () {
+        return monadContT(dictMonadAsk.Monad0());
+    }, Control_Monad_Trans_Class.lift(monadTransContT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
+};
+var monadReaderContT = function (dictMonadReader) {
+    return new Control_Monad_Reader_Class.MonadReader(function () {
+        return monadAskContT(dictMonadReader.MonadAsk0());
+    }, function (f) {
+        return function (v) {
+            return function (k) {
+                return Control_Bind.bind(((dictMonadReader.MonadAsk0()).Monad0()).Bind1())(Control_Monad_Reader_Class.ask(dictMonadReader.MonadAsk0()))(function (v1) {
+                    return Control_Monad_Reader_Class.local(dictMonadReader)(f)(v(function ($45) {
+                        return Control_Monad_Reader_Class.local(dictMonadReader)(Data_Function["const"](v1))(k($45));
+                    }));
+                });
+            };
+        };
+    });
+};
+var monadContContT = function (dictMonad) {
+    return new Control_Monad_Cont_Class.MonadCont(function () {
+        return monadContT(dictMonad);
+    }, function (f) {
+        return function (k) {
+            var v = f(function (a) {
+                return function (v1) {
+                    return k(a);
+                };
+            });
+            return v(k);
+        };
+    });
+};
+var monadEffContT = function (dictMonadEff) {
+    return new Control_Monad_Eff_Class.MonadEff(function () {
+        return monadContT(dictMonadEff.Monad0());
+    }, function ($46) {
+        return Control_Monad_Trans_Class.lift(monadTransContT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($46));
+    });
+};
+var monadStateContT = function (dictMonadState) {
+    return new Control_Monad_State_Class.MonadState(function () {
+        return monadContT(dictMonadState.Monad0());
+    }, function ($47) {
+        return Control_Monad_Trans_Class.lift(monadTransContT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)($47));
+    });
+};
+module.exports = {
+    ContT: ContT, 
+    mapContT: mapContT, 
+    runContT: runContT, 
+    withContT: withContT, 
+    newtypeContT: newtypeContT, 
+    monadContContT: monadContContT, 
+    functorContT: functorContT, 
+    applyContT: applyContT, 
+    applicativeContT: applicativeContT, 
+    bindContT: bindContT, 
+    monadContT: monadContT, 
+    monadTransContT: monadTransContT, 
+    monadEffContT: monadEffContT, 
+    monadAskContT: monadAskContT, 
+    monadReaderContT: monadReaderContT, 
+    monadStateContT: monadStateContT
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Control.Monad.Cont.Class":57,"../Control.Monad.Eff.Class":59,"../Control.Monad.Reader.Class":76,"../Control.Monad.State.Class":81,"../Control.Monad.Trans.Class":84,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Functor":157,"../Data.Newtype":215,"../Prelude":278}],59:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var MonadEff = function (Monad0, liftEff) {
+    this.Monad0 = Monad0;
+    this.liftEff = liftEff;
+};
+var monadEffEff = new MonadEff(function () {
+    return Control_Monad_Eff.monadEff;
+}, Control_Category.id(Control_Category.categoryFn));
+var liftEff = function (dict) {
+    return dict.liftEff;
+};
+module.exports = {
+    MonadEff: MonadEff, 
+    liftEff: liftEff, 
+    monadEffEff: monadEffEff
+};
+
+},{"../Control.Category":47,"../Control.Monad":87,"../Control.Monad.Eff":71}],60:[function(require,module,exports){
+"use strict";
+
+exports.log = function (s) {
+  return function () {
+    console.log(s);
+    return {};
+  };
+};
+
+exports.warn = function (s) {
+  return function () {
+    console.warn(s);
+    return {};
+  };
+};
+
+exports.error = function (s) {
+  return function () {
+    console.error(s);
+    return {};
+  };
+};
+
+exports.info = function (s) {
+  return function () {
+    console.info(s);
+    return {};
+  };
+};
+
+},{}],61:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var warnShow = function (dictShow) {
+    return function (a) {
+        return $foreign.warn(Data_Show.show(dictShow)(a));
+    };
+};
+var logShow = function (dictShow) {
+    return function (a) {
+        return $foreign.log(Data_Show.show(dictShow)(a));
+    };
+};
+var infoShow = function (dictShow) {
+    return function (a) {
+        return $foreign.info(Data_Show.show(dictShow)(a));
+    };
+};
+var errorShow = function (dictShow) {
+    return function (a) {
+        return $foreign.error(Data_Show.show(dictShow)(a));
+    };
+};
+module.exports = {
+    errorShow: errorShow, 
+    infoShow: infoShow, 
+    logShow: logShow, 
+    warnShow: warnShow, 
+    error: $foreign.error, 
+    info: $foreign.info, 
+    log: $foreign.log, 
+    warn: $foreign.warn
+};
+
+},{"../Control.Monad.Eff":71,"../Data.Show":241,"../Data.Unit":259,"./foreign":60}],62:[function(require,module,exports){
+"use strict";
+
+exports.showErrorImpl = function (err) {
+  return err.stack || err.toString();
+};
+
+exports.error = function (msg) {
+  return new Error(msg);
+};
+
+exports.message = function (e) {
+  return e.message;
+};
+
+exports.stackImpl = function (just) {
+  return function (nothing) {
+    return function (e) {
+      return e.stack ? just(e.stack) : nothing;
+    };
+  };
+};
+
+exports.throwException = function (e) {
+  return function () {
+    throw e;
+  };
+};
+
+exports.catchException = function (c) {
+  return function (t) {
+    return function () {
+      try {
+        return t();
+      } catch (e) {
+        if (e instanceof Error || Object.prototype.toString.call(e) === "[object Error]") {
+          return c(e)();
+        } else {
+          return c(new Error(e.toString()))();
+        }
+      }
+    };
+  };
+};
+
+},{}],63:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var $$try = function (action) {
+    return $foreign.catchException(function ($0) {
+        return Control_Applicative.pure(Control_Monad_Eff.applicativeEff)(Data_Either.Left.create($0));
+    })(Data_Functor.map(Control_Monad_Eff.functorEff)(Data_Either.Right.create)(action));
+};
+var $$throw = function ($1) {
+    return $foreign.throwException($foreign.error($1));
+};
+var stack = $foreign.stackImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var showError = new Data_Show.Show($foreign.showErrorImpl);
+module.exports = {
+    stack: stack, 
+    "throw": $$throw, 
+    "try": $$try, 
+    showError: showError, 
+    catchException: $foreign.catchException, 
+    error: $foreign.error, 
+    message: $foreign.message, 
+    throwException: $foreign.throwException
+};
+
+},{"../Control.Applicative":40,"../Control.Monad.Eff":71,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Functor":157,"../Data.Maybe":204,"../Data.Show":241,"../Prelude":278,"./foreign":62}],64:[function(require,module,exports){
+/* global exports */
+"use strict";
+
+exports.ready = function(func) {
+    return function() {
+        jQuery(document).ready(func);
+    };
+};
+
+exports.select = function(selector) {
+    return function() {
+        return jQuery(selector);
+    };
+};
+
+exports.find = function(selector) {
+    return function(ob) {
+        return function() {
+            return ob.find(selector);
+        };
+    };
+};
+
+exports.parent = function(ob) {
+    return function() {
+        return ob.parent();
+    };
+};
+
+exports.closest = function(selector) {
+    return function(ob) {
+        return function() {
+            return ob.closest(selector);
+        };
+    };
+};
+
+exports.create = function(html) {
+    return function() {
+        return jQuery(html);
+    };
+};
+
+exports.setAttr = function(attr) {
+    return function(val) {
+        return function(ob) {
+            return function() {
+                ob.attr(attr, val);
+            };
+        };
+    };
+};
+
+exports.getAttrImpl = function(attr) {
+    return function(ob) {
+        return function() {
+            return ob.attr(attr);
+        };
+    };
+};
+
+exports.attr = function(attrs) {
+    return function(ob) {
+        return function() {
+            ob.attr(attrs);
+        };
+    };
+};
+
+exports.css = function(props) {
+    return function(ob) {
+        return function() {
+            ob.css(props);
+        };
+    };
+};
+
+exports.hasClass = function(cls) {
+    return function(ob) {
+        return function() {
+            return ob.hasClass(cls);
+        };
+    };
+};
+
+exports.toggleClass = function(cls) {
+    return function(ob) {
+        return function() {
+            ob.toggleClass(cls);
+        };
+    };
+};
+
+exports.setClass = function(cls) {
+    return function(flag) {
+        return function(ob) {
+            return function() {
+                ob.toggleClass(cls, flag);
+            };
+        };
+    };
+};
+
+exports.setProp = function(p) {
+    return function(val) {
+        return function(ob) {
+            return function() {
+                ob.prop(p, val);
+            };
+        };
+    };
+};
+
+exports.getProp = function(p) {
+    return function(ob) {
+        return function() {
+            return ob.prop(p);
+        };
+    };
+};
+
+exports.append = function(ob1) {
+    return function(ob) {
+        return function() {
+            ob.append(ob1);
+        };
+    };
+};
+
+exports.appendText = function(s) {
+    return function(ob) {
+        return function() {
+            ob.append(s);
+        };
+    };
+};
+
+exports.body = function() {
+    return jQuery(document.body);
+};
+
+exports.remove = function(ob) {
+    return function() {
+        ob.remove();
+    };
+};
+
+exports.clear = function(ob) {
+    return function() {
+        ob.empty();
+    };
+};
+
+exports.before = function(ob) {
+    return function(ob1) {
+        return function() {
+            ob1.before(ob);
+        };
+    };
+};
+
+exports.getText = function(ob) {
+    return function() {
+        return ob.text();
+    };
+};
+
+exports.setText = function(text) {
+    return function(ob) {
+        return function() {
+            ob.text(text);
+        };
+    };
+};
+
+exports.getHtml = function(ob) {
+    return function() {
+        return ob.html();
+    };
+};
+
+exports.setHtml = function(html) {
+    return function(ob) {
+        return function() {
+            ob.html(html);
+        };
+    };
+};
+
+exports.getValue = function(ob) {
+    return function() {
+        return ob.val();
+    };
+};
+
+exports.setValue = function(val) {
+    return function(ob) {
+        return function() {
+            ob.val(val);
+        };
+    };
+};
+
+exports.toggle = function(ob) {
+    return function() {
+        ob.toggle();
+    };
+};
+
+exports.setVisible = function(flag) {
+    return function(ob) {
+        return function() {
+            ob.toggle(flag);
+        };
+    };
+};
+
+exports.toArray = function(ob) {
+    return function() {
+        var els = ob.toArray();
+        var copy = [];
+        for (var i = 0; i < els.length; i++) {
+            copy.push(jQuery(els[i]));
+        }
+        return copy;
+    };
+};
+
+exports.on = function(evt) {
+    return function(act) {
+        return function(ob) {
+            return function() {
+                ob.on(evt, function(e) {
+                    act(e)(jQuery(this))();
+                });
+            };
+        };
+    };
+};
+
+exports["on'"] = function(evt) {
+    return function(sel) {
+        return function(act) {
+            return function(ob) {
+                return function() {
+                    ob.on(evt, sel, function(e) {
+                        act(e)(jQuery(this))();
+                    });
+                };
+            };
+        };
+    };
+};
+
+
+exports.off = function(evt) {
+    return function(ob) {
+        return function() {
+            return ob.off(evt);
+        };
+    };
+};
+
+
+exports["off'"] = function(ob) {
+    return function() {
+        return ob.off();
+    };
+};
+
+exports.preventDefault = function(e) {
+    return function() {
+        e.preventDefault();
+    };
+};
+
+exports.stopPropagation = function(e) {
+    return function() {
+        e.stopPropagation();
+    };
+};
+
+exports.stopImmediatePropagation = function(e) {
+    return function() {
+        e.stopImmediatePropagation();
+    };
+};
+
+exports.getTarget = function(e) {
+    return function() {
+        return jQuery(e.target);
+    };
+};
+
+exports.getCurrentTarget = function(e) {
+    return function() {
+        return jQuery(e.currentTarget);
+    };
+};
+
+exports.getPageX = function(e) {
+    return function() {
+        return e.pageX;
+    };
+};
+
+exports.getPageY = function(e) {
+    return function() {
+        return e.pageY;
+    };
+};
+
+exports.getWhich = function(e) {
+    return function() {
+        return e.which;
+    };
+};
+
+exports.getMetaKey = function(e) {
+    return function() {
+        return e.metaKey;
+    };
+};
+
+
+exports.clone = function(ob) {
+    return function() {
+        return ob.clone();
+    };
+};
+
+exports.cloneWithDataAndEvents = function(ob) {
+    return function() {
+        return ob.clone(true);
+    };
+};
+
+},{}],65:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var DOM = require("../DOM");
+var Data_Foreign = require("../Data.Foreign");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Prelude = require("../Prelude");
+var removeClass = function (cls) {
+    return $foreign.setClass(cls)(false);
+};
+var hide = $foreign.setVisible(false);
+var getAttr = function (str) {
+    return function (jq) {
+        var foreignToString = function (f) {
+            var $0 = Data_Foreign.isUndefined(f);
+            if ($0) {
+                return Data_Maybe.Nothing.value;
+            };
+            return new Data_Maybe.Just(Data_Foreign.unsafeFromForeign(f));
+        };
+        return Data_Functor.map(Control_Monad_Eff.functorEff)(foreignToString)($foreign.getAttrImpl(str)(jq));
+    };
+};
+var display = $foreign.setVisible(true);
+var addClass = function (cls) {
+    return $foreign.setClass(cls)(true);
+};
+module.exports = {
+    addClass: addClass, 
+    display: display, 
+    getAttr: getAttr, 
+    hide: hide, 
+    removeClass: removeClass, 
+    append: $foreign.append, 
+    appendText: $foreign.appendText, 
+    attr: $foreign.attr, 
+    before: $foreign.before, 
+    body: $foreign.body, 
+    clear: $foreign.clear, 
+    clone: $foreign.clone, 
+    cloneWithDataAndEvents: $foreign.cloneWithDataAndEvents, 
+    closest: $foreign.closest, 
+    create: $foreign.create, 
+    css: $foreign.css, 
+    find: $foreign.find, 
+    getCurrentTarget: $foreign.getCurrentTarget, 
+    getHtml: $foreign.getHtml, 
+    getMetaKey: $foreign.getMetaKey, 
+    getPageX: $foreign.getPageX, 
+    getPageY: $foreign.getPageY, 
+    getProp: $foreign.getProp, 
+    getTarget: $foreign.getTarget, 
+    getText: $foreign.getText, 
+    getValue: $foreign.getValue, 
+    getWhich: $foreign.getWhich, 
+    hasClass: $foreign.hasClass, 
+    off: $foreign.off, 
+    "off'": $foreign["off'"], 
+    on: $foreign.on, 
+    "on'": $foreign["on'"], 
+    parent: $foreign.parent, 
+    preventDefault: $foreign.preventDefault, 
+    ready: $foreign.ready, 
+    remove: $foreign.remove, 
+    select: $foreign.select, 
+    setAttr: $foreign.setAttr, 
+    setClass: $foreign.setClass, 
+    setHtml: $foreign.setHtml, 
+    setProp: $foreign.setProp, 
+    setText: $foreign.setText, 
+    setValue: $foreign.setValue, 
+    setVisible: $foreign.setVisible, 
+    stopImmediatePropagation: $foreign.stopImmediatePropagation, 
+    stopPropagation: $foreign.stopPropagation, 
+    toArray: $foreign.toArray, 
+    toggle: $foreign.toggle, 
+    toggleClass: $foreign.toggleClass
+};
+
+},{"../Control.Monad.Eff":71,"../DOM":101,"../Data.Foreign":147,"../Data.Functor":157,"../Data.Maybe":204,"../Prelude":278,"./foreign":64}],66:[function(require,module,exports){
+"use strict";
+
+exports.newRef = function (val) {
+  return function () {
+    return { value: val };
+  };
+};
+
+exports.readRef = function (ref) {
+  return function () {
+    return ref.value;
+  };
+};
+
+exports["modifyRef'"] = function (ref) {
+  return function (f) {
+    return function () {
+      var t = f(ref.value);
+      ref.value = t.state;
+      return t.value;
+    };
+  };
+};
+
+exports.writeRef = function (ref) {
+  return function (val) {
+    return function () {
+      ref.value = val;
+      return {};
+    };
+  };
+};
+
+},{}],67:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var modifyRef = function (ref) {
+    return function (f) {
+        return $foreign["modifyRef'"](ref)(function (s) {
+            return {
+                state: f(s), 
+                value: Data_Unit.unit
+            };
+        });
+    };
+};
+module.exports = {
+    modifyRef: modifyRef, 
+    "modifyRef'": $foreign["modifyRef'"], 
+    newRef: $foreign.newRef, 
+    readRef: $foreign.readRef, 
+    writeRef: $foreign.writeRef
+};
+
+},{"../Control.Monad.Eff":71,"../Data.Unit":259,"../Prelude":278,"./foreign":66}],68:[function(require,module,exports){
+"use strict";
+
+exports.unsafeCoerceEff = function (f) {
+  return f;
+};
+
+},{}],69:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var unsafePerformEff = function ($0) {
+    return Control_Monad_Eff.runPure($foreign.unsafeCoerceEff($0));
+};
+module.exports = {
+    unsafePerformEff: unsafePerformEff, 
+    unsafeCoerceEff: $foreign.unsafeCoerceEff
+};
+
+},{"../Control.Monad.Eff":71,"../Control.Semigroupoid":93,"./foreign":68}],70:[function(require,module,exports){
+"use strict";
+
+exports.pureE = function (a) {
+  return function () {
+    return a;
+  };
+};
+
+exports.bindE = function (a) {
+  return function (f) {
+    return function () {
+      return f(a())();
+    };
+  };
+};
+
+exports.runPure = function (f) {
+  return f();
+};
+
+exports.untilE = function (f) {
+  return function () {
+    while (!f());
+    return {};
+  };
+};
+
+exports.whileE = function (f) {
+  return function (a) {
+    return function () {
+      while (f()) {
+        a();
+      }
+      return {};
+    };
+  };
+};
+
+exports.forE = function (lo) {
+  return function (hi) {
+    return function (f) {
+      return function () {
+        for (var i = lo; i < hi; i++) {
+          f(i)();
+        }
+      };
+    };
+  };
+};
+
+exports.foreachE = function (as) {
+  return function (f) {
+    return function () {
+      for (var i = 0, l = as.length; i < l; i++) {
+        f(as[i])();
+      }
+    };
+  };
+};
+
+},{}],71:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Data_Functor = require("../Data.Functor");
+var Data_Unit = require("../Data.Unit");
+var monadEff = new Control_Monad.Monad(function () {
+    return applicativeEff;
+}, function () {
+    return bindEff;
+});
+var bindEff = new Control_Bind.Bind(function () {
+    return applyEff;
+}, $foreign.bindE);
+var applyEff = new Control_Apply.Apply(function () {
+    return functorEff;
+}, Control_Monad.ap(monadEff));
+var applicativeEff = new Control_Applicative.Applicative(function () {
+    return applyEff;
+}, $foreign.pureE);
+var functorEff = new Data_Functor.Functor(Control_Applicative.liftA1(applicativeEff));
+module.exports = {
+    functorEff: functorEff, 
+    applyEff: applyEff, 
+    applicativeEff: applicativeEff, 
+    bindEff: bindEff, 
+    monadEff: monadEff, 
+    forE: $foreign.forE, 
+    foreachE: $foreign.foreachE, 
+    runPure: $foreign.runPure, 
+    untilE: $foreign.untilE, 
+    whileE: $foreign.whileE
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Data.Functor":157,"../Data.Unit":259,"./foreign":70}],72:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var MonadThrow = function (Monad0, throwError) {
+    this.Monad0 = Monad0;
+    this.throwError = throwError;
+};
+var MonadError = function (MonadThrow0, catchError) {
+    this.MonadThrow0 = MonadThrow0;
+    this.catchError = catchError;
+};
+var throwError = function (dict) {
+    return dict.throwError;
+};
+var monadThrowMaybe = new MonadThrow(function () {
+    return Data_Maybe.monadMaybe;
+}, Data_Function["const"](Data_Maybe.Nothing.value));
+var monadThrowEither = new MonadThrow(function () {
+    return Data_Either.monadEither;
+}, Data_Either.Left.create);
+var monadErrorMaybe = new MonadError(function () {
+    return monadThrowMaybe;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Data_Maybe.Nothing) {
+            return v1(Data_Unit.unit);
+        };
+        if (v instanceof Data_Maybe.Just) {
+            return new Data_Maybe.Just(v.value0);
+        };
+        throw new Error("Failed pattern match at Control.Monad.Error.Class line 77, column 3 - line 77, column 33: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var monadErrorEither = new MonadError(function () {
+    return monadThrowEither;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Data_Either.Left) {
+            return v1(v.value0);
+        };
+        if (v instanceof Data_Either.Right) {
+            return new Data_Either.Right(v.value0);
+        };
+        throw new Error("Failed pattern match at Control.Monad.Error.Class line 70, column 3 - line 70, column 30: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var catchError = function (dict) {
+    return dict.catchError;
+};
+var catchJust = function (dictMonadError) {
+    return function (p) {
+        return function (act) {
+            return function (handler) {
+                var handle = function (e) {
+                    var v = p(e);
+                    if (v instanceof Data_Maybe.Nothing) {
+                        return throwError(dictMonadError.MonadThrow0())(e);
+                    };
+                    if (v instanceof Data_Maybe.Just) {
+                        return handler(v.value0);
+                    };
+                    throw new Error("Failed pattern match at Control.Monad.Error.Class line 54, column 5 - line 56, column 26: " + [ v.constructor.name ]);
+                };
+                return catchError(dictMonadError)(act)(handle);
+            };
+        };
+    };
+};
+var $$try = function (dictMonadError) {
+    return function (a) {
+        return catchError(dictMonadError)(Data_Functor.map(((((dictMonadError.MonadThrow0()).Monad0()).Bind1()).Apply0()).Functor0())(Data_Either.Right.create)(a))(function ($21) {
+            return Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0())(Data_Either.Left.create($21));
+        });
+    };
+};
+var withResource = function (dictMonadError) {
+    return function (acquire) {
+        return function (release) {
+            return function (kleisli) {
+                return Control_Bind.bind(((dictMonadError.MonadThrow0()).Monad0()).Bind1())(acquire)(function (v) {
+                    return Control_Bind.bind(((dictMonadError.MonadThrow0()).Monad0()).Bind1())($$try(dictMonadError)(kleisli(v)))(function (v1) {
+                        return Control_Bind.discard(Control_Bind.discardUnit)(((dictMonadError.MonadThrow0()).Monad0()).Bind1())(release(v))(function () {
+                            return Data_Either.either(throwError(dictMonadError.MonadThrow0()))(Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0()))(v1);
+                        });
+                    });
+                });
+            };
+        };
+    };
+};
+module.exports = {
+    MonadError: MonadError, 
+    MonadThrow: MonadThrow, 
+    catchError: catchError, 
+    catchJust: catchJust, 
+    throwError: throwError, 
+    "try": $$try, 
+    withResource: withResource, 
+    monadThrowEither: monadThrowEither, 
+    monadErrorEither: monadErrorEither, 
+    monadThrowMaybe: monadThrowMaybe, 
+    monadErrorMaybe: monadErrorMaybe
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Maybe":204,"../Data.Unit":259,"../Prelude":278}],73:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
+var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var ExceptT = function (x) {
+    return x;
+};
+var withExceptT = function (dictFunctor) {
+    return function (f) {
+        return function (v) {
+            var mapLeft = function (v1) {
+                return function (v2) {
+                    if (v2 instanceof Data_Either.Right) {
+                        return new Data_Either.Right(v2.value0);
+                    };
+                    if (v2 instanceof Data_Either.Left) {
+                        return new Data_Either.Left(v1(v2.value0));
+                    };
+                    throw new Error("Failed pattern match at Control.Monad.Except.Trans line 44, column 3 - line 44, column 32: " + [ v1.constructor.name, v2.constructor.name ]);
+                };
+            };
+            return ExceptT(Data_Functor.map(dictFunctor)(mapLeft(f))(v));
+        };
+    };
+};
+var runExceptT = function (v) {
+    return v;
+};
+var newtypeExceptT = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, ExceptT);
+var monadTransExceptT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
+    return function (m) {
+        return Control_Bind.bind(dictMonad.Bind1())(m)(function (v) {
+            return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(v));
+        });
+    };
+});
+var mapExceptT = function (f) {
+    return function (v) {
+        return f(v);
+    };
+};
+var functorExceptT = function (dictFunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return mapExceptT(Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Either.functorEither)(f)));
+    });
+};
+var except = function (dictApplicative) {
+    return function ($96) {
+        return ExceptT(Control_Applicative.pure(dictApplicative)($96));
+    };
+};
+var monadExceptT = function (dictMonad) {
+    return new Control_Monad.Monad(function () {
+        return applicativeExceptT(dictMonad);
+    }, function () {
+        return bindExceptT(dictMonad);
+    });
+};
+var bindExceptT = function (dictMonad) {
+    return new Control_Bind.Bind(function () {
+        return applyExceptT(dictMonad);
+    }, function (v) {
+        return function (k) {
+            return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either(function ($97) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($97));
+            })(function (a) {
+                var v1 = k(a);
+                return v1;
+            }));
+        };
+    });
+};
+var applyExceptT = function (dictMonad) {
+    return new Control_Apply.Apply(function () {
+        return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());
+    }, Control_Monad.ap(monadExceptT(dictMonad)));
+};
+var applicativeExceptT = function (dictMonad) {
+    return new Control_Applicative.Applicative(function () {
+        return applyExceptT(dictMonad);
+    }, function ($98) {
+        return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Right.create($98)));
+    });
+};
+var monadAskExceptT = function (dictMonadAsk) {
+    return new Control_Monad_Reader_Class.MonadAsk(function () {
+        return monadExceptT(dictMonadAsk.Monad0());
+    }, Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
+};
+var monadReaderExceptT = function (dictMonadReader) {
+    return new Control_Monad_Reader_Class.MonadReader(function () {
+        return monadAskExceptT(dictMonadReader.MonadAsk0());
+    }, function (f) {
+        return mapExceptT(Control_Monad_Reader_Class.local(dictMonadReader)(f));
+    });
+};
+var monadContExceptT = function (dictMonadCont) {
+    return new Control_Monad_Cont_Class.MonadCont(function () {
+        return monadExceptT(dictMonadCont.Monad0());
+    }, function (f) {
+        return ExceptT(Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
+            var v = f(function (a) {
+                return ExceptT(c(new Data_Either.Right(a)));
+            });
+            return v;
+        }));
+    });
+};
+var monadEffExceptT = function (dictMonadEff) {
+    return new Control_Monad_Eff_Class.MonadEff(function () {
+        return monadExceptT(dictMonadEff.Monad0());
+    }, function ($99) {
+        return Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($99));
+    });
+};
+var monadRecExceptT = function (dictMonadRec) {
+    return new Control_Monad_Rec_Class.MonadRec(function () {
+        return monadExceptT(dictMonadRec.Monad0());
+    }, function (f) {
+        return function ($100) {
+            return ExceptT(Control_Monad_Rec_Class.tailRecM(dictMonadRec)(function (a) {
+                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
+                    var v = f(a);
+                    return v;
+                })())(function (m$prime) {
+                    return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
+                        if (m$prime instanceof Data_Either.Left) {
+                            return new Control_Monad_Rec_Class.Done(new Data_Either.Left(m$prime.value0));
+                        };
+                        if (m$prime instanceof Data_Either.Right && m$prime.value0 instanceof Control_Monad_Rec_Class.Loop) {
+                            return new Control_Monad_Rec_Class.Loop(m$prime.value0.value0);
+                        };
+                        if (m$prime instanceof Data_Either.Right && m$prime.value0 instanceof Control_Monad_Rec_Class.Done) {
+                            return new Control_Monad_Rec_Class.Done(new Data_Either.Right(m$prime.value0.value0));
+                        };
+                        throw new Error("Failed pattern match at Control.Monad.Except.Trans line 76, column 14 - line 79, column 43: " + [ m$prime.constructor.name ]);
+                    })());
+                });
+            })($100));
+        };
+    });
+};
+var monadStateExceptT = function (dictMonadState) {
+    return new Control_Monad_State_Class.MonadState(function () {
+        return monadExceptT(dictMonadState.Monad0());
+    }, function (f) {
+        return Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)(f));
+    });
+};
+var monadTellExceptT = function (dictMonadTell) {
+    return new Control_Monad_Writer_Class.MonadTell(function () {
+        return monadExceptT(dictMonadTell.Monad0());
+    }, function ($101) {
+        return Control_Monad_Trans_Class.lift(monadTransExceptT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($101));
+    });
+};
+var monadWriterExceptT = function (dictMonadWriter) {
+    return new Control_Monad_Writer_Class.MonadWriter(function () {
+        return monadTellExceptT(dictMonadWriter.MonadTell0());
+    }, mapExceptT(function (m) {
+        return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(Control_Monad_Writer_Class.listen(dictMonadWriter)(m))(function (v) {
+            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(Data_Functor.map(Data_Either.functorEither)(function (r) {
+                return new Data_Tuple.Tuple(r, v.value1);
+            })(v.value0));
+        });
+    }), mapExceptT(function (m) {
+        return Control_Monad_Writer_Class.pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m)(function (v) {
+            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())((function () {
+                if (v instanceof Data_Either.Left) {
+                    return new Data_Tuple.Tuple(new Data_Either.Left(v.value0), Control_Category.id(Control_Category.categoryFn));
+                };
+                if (v instanceof Data_Either.Right) {
+                    return new Data_Tuple.Tuple(new Data_Either.Right(v.value0.value0), v.value0.value1);
+                };
+                throw new Error("Failed pattern match at Control.Monad.Except.Trans line 138, column 10 - line 140, column 44: " + [ v.constructor.name ]);
+            })());
+        }));
+    }));
+};
+var monadThrowExceptT = function (dictMonad) {
+    return new Control_Monad_Error_Class.MonadThrow(function () {
+        return monadExceptT(dictMonad);
+    }, function ($102) {
+        return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($102)));
+    });
+};
+var monadErrorExceptT = function (dictMonad) {
+    return new Control_Monad_Error_Class.MonadError(function () {
+        return monadThrowExceptT(dictMonad);
+    }, function (v) {
+        return function (k) {
+            return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either(function (a) {
+                var v1 = k(a);
+                return v1;
+            })(function ($103) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Right.create($103));
+            }));
+        };
+    });
+};
+var altExceptT = function (dictSemigroup) {
+    return function (dictMonad) {
+        return new Control_Alt.Alt(function () {
+            return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());
+        }, function (v) {
+            return function (v1) {
+                return Control_Bind.bind(dictMonad.Bind1())(v)(function (v2) {
+                    if (v2 instanceof Data_Either.Right) {
+                        return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(v2.value0));
+                    };
+                    if (v2 instanceof Data_Either.Left) {
+                        return Control_Bind.bind(dictMonad.Bind1())(v1)(function (v3) {
+                            if (v3 instanceof Data_Either.Right) {
+                                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(v3.value0));
+                            };
+                            if (v3 instanceof Data_Either.Left) {
+                                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Left(Data_Semigroup.append(dictSemigroup)(v2.value0)(v3.value0)));
+                            };
+                            throw new Error("Failed pattern match at Control.Monad.Except.Trans line 88, column 9 - line 90, column 49: " + [ v3.constructor.name ]);
+                        });
+                    };
+                    throw new Error("Failed pattern match at Control.Monad.Except.Trans line 84, column 5 - line 90, column 49: " + [ v2.constructor.name ]);
+                });
+            };
+        });
+    };
+};
+var plusExceptT = function (dictMonoid) {
+    return function (dictMonad) {
+        return new Control_Plus.Plus(function () {
+            return altExceptT(dictMonoid.Semigroup0())(dictMonad);
+        }, Control_Monad_Error_Class.throwError(monadThrowExceptT(dictMonad))(Data_Monoid.mempty(dictMonoid)));
+    };
+};
+var alternativeExceptT = function (dictMonoid) {
+    return function (dictMonad) {
+        return new Control_Alternative.Alternative(function () {
+            return applicativeExceptT(dictMonad);
+        }, function () {
+            return plusExceptT(dictMonoid)(dictMonad);
+        });
+    };
+};
+var monadZeroExceptT = function (dictMonoid) {
+    return function (dictMonad) {
+        return new Control_MonadZero.MonadZero(function () {
+            return alternativeExceptT(dictMonoid)(dictMonad);
+        }, function () {
+            return monadExceptT(dictMonad);
+        });
+    };
+};
+var monadPlusExceptT = function (dictMonoid) {
+    return function (dictMonad) {
+        return new Control_MonadPlus.MonadPlus(function () {
+            return monadZeroExceptT(dictMonoid)(dictMonad);
+        });
+    };
+};
+module.exports = {
+    ExceptT: ExceptT, 
+    except: except, 
+    mapExceptT: mapExceptT, 
+    runExceptT: runExceptT, 
+    withExceptT: withExceptT, 
+    newtypeExceptT: newtypeExceptT, 
+    functorExceptT: functorExceptT, 
+    applyExceptT: applyExceptT, 
+    applicativeExceptT: applicativeExceptT, 
+    bindExceptT: bindExceptT, 
+    monadExceptT: monadExceptT, 
+    monadRecExceptT: monadRecExceptT, 
+    altExceptT: altExceptT, 
+    plusExceptT: plusExceptT, 
+    alternativeExceptT: alternativeExceptT, 
+    monadPlusExceptT: monadPlusExceptT, 
+    monadZeroExceptT: monadZeroExceptT, 
+    monadTransExceptT: monadTransExceptT, 
+    monadEffExceptT: monadEffExceptT, 
+    monadContExceptT: monadContExceptT, 
+    monadThrowExceptT: monadThrowExceptT, 
+    monadErrorExceptT: monadErrorExceptT, 
+    monadAskExceptT: monadAskExceptT, 
+    monadReaderExceptT: monadReaderExceptT, 
+    monadStateExceptT: monadStateExceptT, 
+    monadTellExceptT: monadTellExceptT, 
+    monadWriterExceptT: monadWriterExceptT
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":87,"../Control.Monad.Cont.Class":57,"../Control.Monad.Eff.Class":59,"../Control.Monad.Error.Class":72,"../Control.Monad.Reader.Class":76,"../Control.Monad.Rec.Class":78,"../Control.Monad.State.Class":81,"../Control.Monad.Trans.Class":84,"../Control.Monad.Writer.Class":85,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Semigroup":237,"../Data.Tuple":255,"../Prelude":278}],74:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Identity = require("../Data.Identity");
+var Data_Newtype = require("../Data.Newtype");
+var Prelude = require("../Prelude");
+var withExcept = Control_Monad_Except_Trans.withExceptT(Data_Identity.functorIdentity);
+var runExcept = function ($0) {
+    return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(Control_Monad_Except_Trans.runExceptT($0));
+};
+var mapExcept = function (f) {
+    return Control_Monad_Except_Trans.mapExceptT(function ($1) {
+        return Data_Identity.Identity(f(Data_Newtype.unwrap(Data_Identity.newtypeIdentity)($1)));
+    });
+};
+module.exports = {
+    mapExcept: mapExcept, 
+    runExcept: runExcept, 
+    withExcept: withExcept
+};
+
+},{"../Control.Monad.Error.Class":72,"../Control.Monad.Except.Trans":73,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Identity":163,"../Data.Newtype":215,"../Prelude":278}],75:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
+var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var MaybeT = function (x) {
+    return x;
+};
+var runMaybeT = function (v) {
+    return v;
+};
+var newtypeMaybeT = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, MaybeT);
+var monadTransMaybeT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
+    return function ($75) {
+        return MaybeT(Control_Monad.liftM1(dictMonad)(Data_Maybe.Just.create)($75));
+    };
+});
+var mapMaybeT = function (f) {
+    return function (v) {
+        return f(v);
+    };
+};
+var functorMaybeT = function (dictFunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return function (v) {
+            return Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v);
+        };
+    });
+};
+var monadMaybeT = function (dictMonad) {
+    return new Control_Monad.Monad(function () {
+        return applicativeMaybeT(dictMonad);
+    }, function () {
+        return bindMaybeT(dictMonad);
+    });
+};
+var bindMaybeT = function (dictMonad) {
+    return new Control_Bind.Bind(function () {
+        return applyMaybeT(dictMonad);
+    }, function (v) {
+        return function (f) {
+            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v1) {
+                if (v1 instanceof Data_Maybe.Nothing) {
+                    return Control_Applicative.pure(dictMonad.Applicative0())(Data_Maybe.Nothing.value);
+                };
+                if (v1 instanceof Data_Maybe.Just) {
+                    var v2 = f(v1.value0);
+                    return v2;
+                };
+                throw new Error("Failed pattern match at Control.Monad.Maybe.Trans line 55, column 11 - line 57, column 42: " + [ v1.constructor.name ]);
+            });
+        };
+    });
+};
+var applyMaybeT = function (dictMonad) {
+    return new Control_Apply.Apply(function () {
+        return functorMaybeT(((dictMonad.Bind1()).Apply0()).Functor0());
+    }, Control_Monad.ap(monadMaybeT(dictMonad)));
+};
+var applicativeMaybeT = function (dictMonad) {
+    return new Control_Applicative.Applicative(function () {
+        return applyMaybeT(dictMonad);
+    }, function ($76) {
+        return MaybeT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Maybe.Just.create($76)));
+    });
+};
+var monadAskMaybeT = function (dictMonadAsk) {
+    return new Control_Monad_Reader_Class.MonadAsk(function () {
+        return monadMaybeT(dictMonadAsk.Monad0());
+    }, Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
+};
+var monadReaderMaybeT = function (dictMonadReader) {
+    return new Control_Monad_Reader_Class.MonadReader(function () {
+        return monadAskMaybeT(dictMonadReader.MonadAsk0());
+    }, function (f) {
+        return mapMaybeT(Control_Monad_Reader_Class.local(dictMonadReader)(f));
+    });
+};
+var monadContMaybeT = function (dictMonadCont) {
+    return new Control_Monad_Cont_Class.MonadCont(function () {
+        return monadMaybeT(dictMonadCont.Monad0());
+    }, function (f) {
+        return MaybeT(Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
+            var v = f(function (a) {
+                return MaybeT(c(new Data_Maybe.Just(a)));
+            });
+            return v;
+        }));
+    });
+};
+var monadEffMaybe = function (dictMonadEff) {
+    return new Control_Monad_Eff_Class.MonadEff(function () {
+        return monadMaybeT(dictMonadEff.Monad0());
+    }, function ($77) {
+        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($77));
+    });
+};
+var monadRecMaybeT = function (dictMonadRec) {
+    return new Control_Monad_Rec_Class.MonadRec(function () {
+        return monadMaybeT(dictMonadRec.Monad0());
+    }, function (f) {
+        return function ($78) {
+            return MaybeT(Control_Monad_Rec_Class.tailRecM(dictMonadRec)(function (a) {
+                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
+                    var v = f(a);
+                    return v;
+                })())(function (m$prime) {
+                    return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
+                        if (m$prime instanceof Data_Maybe.Nothing) {
+                            return new Control_Monad_Rec_Class.Done(Data_Maybe.Nothing.value);
+                        };
+                        if (m$prime instanceof Data_Maybe.Just && m$prime.value0 instanceof Control_Monad_Rec_Class.Loop) {
+                            return new Control_Monad_Rec_Class.Loop(m$prime.value0.value0);
+                        };
+                        if (m$prime instanceof Data_Maybe.Just && m$prime.value0 instanceof Control_Monad_Rec_Class.Done) {
+                            return new Control_Monad_Rec_Class.Done(new Data_Maybe.Just(m$prime.value0.value0));
+                        };
+                        throw new Error("Failed pattern match at Control.Monad.Maybe.Trans line 85, column 16 - line 88, column 43: " + [ m$prime.constructor.name ]);
+                    })());
+                });
+            })($78));
+        };
+    });
+};
+var monadStateMaybeT = function (dictMonadState) {
+    return new Control_Monad_State_Class.MonadState(function () {
+        return monadMaybeT(dictMonadState.Monad0());
+    }, function (f) {
+        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)(f));
+    });
+};
+var monadTellMaybeT = function (dictMonadTell) {
+    return new Control_Monad_Writer_Class.MonadTell(function () {
+        return monadMaybeT(dictMonadTell.Monad0());
+    }, function ($79) {
+        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($79));
+    });
+};
+var monadWriterMaybeT = function (dictMonadWriter) {
+    return new Control_Monad_Writer_Class.MonadWriter(function () {
+        return monadTellMaybeT(dictMonadWriter.MonadTell0());
+    }, mapMaybeT(function (m) {
+        return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(Control_Monad_Writer_Class.listen(dictMonadWriter)(m))(function (v) {
+            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(Data_Functor.map(Data_Maybe.functorMaybe)(function (r) {
+                return new Data_Tuple.Tuple(r, v.value1);
+            })(v.value0));
+        });
+    }), mapMaybeT(function (m) {
+        return Control_Monad_Writer_Class.pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m)(function (v) {
+            return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())((function () {
+                if (v instanceof Data_Maybe.Nothing) {
+                    return new Data_Tuple.Tuple(Data_Maybe.Nothing.value, Control_Category.id(Control_Category.categoryFn));
+                };
+                if (v instanceof Data_Maybe.Just) {
+                    return new Data_Tuple.Tuple(new Data_Maybe.Just(v.value0.value0), v.value0.value1);
+                };
+                throw new Error("Failed pattern match at Control.Monad.Maybe.Trans line 122, column 10 - line 124, column 42: " + [ v.constructor.name ]);
+            })());
+        }));
+    }));
+};
+var monadThrowMaybeT = function (dictMonadThrow) {
+    return new Control_Monad_Error_Class.MonadThrow(function () {
+        return monadMaybeT(dictMonadThrow.Monad0());
+    }, function (e) {
+        return Control_Monad_Trans_Class.lift(monadTransMaybeT)(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)(e));
+    });
+};
+var monadErrorMaybeT = function (dictMonadError) {
+    return new Control_Monad_Error_Class.MonadError(function () {
+        return monadThrowMaybeT(dictMonadError.MonadThrow0());
+    }, function (v) {
+        return function (h) {
+            return MaybeT(Control_Monad_Error_Class.catchError(dictMonadError)(v)(function (a) {
+                var v1 = h(a);
+                return v1;
+            }));
+        };
+    });
+};
+var altMaybeT = function (dictMonad) {
+    return new Control_Alt.Alt(function () {
+        return functorMaybeT(((dictMonad.Bind1()).Apply0()).Functor0());
+    }, function (v) {
+        return function (v1) {
+            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v2) {
+                if (v2 instanceof Data_Maybe.Nothing) {
+                    return v1;
+                };
+                return Control_Applicative.pure(dictMonad.Applicative0())(v2);
+            });
+        };
+    });
+};
+var plusMaybeT = function (dictMonad) {
+    return new Control_Plus.Plus(function () {
+        return altMaybeT(dictMonad);
+    }, Control_Applicative.pure(dictMonad.Applicative0())(Data_Maybe.Nothing.value));
+};
+var alternativeMaybeT = function (dictMonad) {
+    return new Control_Alternative.Alternative(function () {
+        return applicativeMaybeT(dictMonad);
+    }, function () {
+        return plusMaybeT(dictMonad);
+    });
+};
+var monadZeroMaybeT = function (dictMonad) {
+    return new Control_MonadZero.MonadZero(function () {
+        return alternativeMaybeT(dictMonad);
+    }, function () {
+        return monadMaybeT(dictMonad);
+    });
+};
+var monadPlusMaybeT = function (dictMonad) {
+    return new Control_MonadPlus.MonadPlus(function () {
+        return monadZeroMaybeT(dictMonad);
+    });
+};
+module.exports = {
+    MaybeT: MaybeT, 
+    mapMaybeT: mapMaybeT, 
+    runMaybeT: runMaybeT, 
+    newtypeMaybeT: newtypeMaybeT, 
+    functorMaybeT: functorMaybeT, 
+    applyMaybeT: applyMaybeT, 
+    applicativeMaybeT: applicativeMaybeT, 
+    bindMaybeT: bindMaybeT, 
+    monadMaybeT: monadMaybeT, 
+    monadTransMaybeT: monadTransMaybeT, 
+    altMaybeT: altMaybeT, 
+    plusMaybeT: plusMaybeT, 
+    alternativeMaybeT: alternativeMaybeT, 
+    monadPlusMaybeT: monadPlusMaybeT, 
+    monadZeroMaybeT: monadZeroMaybeT, 
+    monadRecMaybeT: monadRecMaybeT, 
+    monadEffMaybe: monadEffMaybe, 
+    monadContMaybeT: monadContMaybeT, 
+    monadThrowMaybeT: monadThrowMaybeT, 
+    monadErrorMaybeT: monadErrorMaybeT, 
+    monadAskMaybeT: monadAskMaybeT, 
+    monadReaderMaybeT: monadReaderMaybeT, 
+    monadStateMaybeT: monadStateMaybeT, 
+    monadTellMaybeT: monadTellMaybeT, 
+    monadWriterMaybeT: monadWriterMaybeT
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":87,"../Control.Monad.Cont.Class":57,"../Control.Monad.Eff.Class":59,"../Control.Monad.Error.Class":72,"../Control.Monad.Reader.Class":76,"../Control.Monad.Rec.Class":78,"../Control.Monad.State.Class":81,"../Control.Monad.Trans.Class":84,"../Control.Monad.Writer.Class":85,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Functor":157,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.Tuple":255,"../Prelude":278}],76:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Monad = require("../Control.Monad");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Functor = require("../Data.Functor");
+var Prelude = require("../Prelude");
+var MonadAsk = function (Monad0, ask) {
+    this.Monad0 = Monad0;
+    this.ask = ask;
+};
+var MonadReader = function (MonadAsk0, local) {
+    this.MonadAsk0 = MonadAsk0;
+    this.local = local;
+};
+var monadAskFun = new MonadAsk(function () {
+    return Control_Monad.monadFn;
+}, Control_Category.id(Control_Category.categoryFn));
+var monadReaderFun = new MonadReader(function () {
+    return monadAskFun;
+}, Control_Semigroupoid.composeFlipped(Control_Semigroupoid.semigroupoidFn));
+var local = function (dict) {
+    return dict.local;
+};
+var ask = function (dict) {
+    return dict.ask;
+};
+var asks = function (dictMonadAsk) {
+    return function (f) {
+        return Data_Functor.map((((dictMonadAsk.Monad0()).Bind1()).Apply0()).Functor0())(f)(ask(dictMonadAsk));
+    };
+};
+module.exports = {
+    MonadAsk: MonadAsk, 
+    MonadReader: MonadReader, 
+    ask: ask, 
+    asks: asks, 
+    local: local, 
+    monadAskFun: monadAskFun, 
+    monadReaderFun: monadReaderFun
+};
+
+},{"../Control.Category":47,"../Control.Monad":87,"../Control.Semigroupoid":93,"../Data.Functor":157,"../Prelude":278}],77:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
+var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Distributive = require("../Data.Distributive");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Semigroup = require("../Data.Semigroup");
+var Prelude = require("../Prelude");
+var ReaderT = function (x) {
+    return x;
+};
+var withReaderT = function (f) {
+    return function (v) {
+        return function ($66) {
+            return v(f($66));
+        };
+    };
+};
+var runReaderT = function (v) {
+    return v;
+};
+var newtypeReaderT = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, ReaderT);
+var monadTransReaderT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
+    return function ($67) {
+        return ReaderT(Data_Function["const"]($67));
+    };
+});
+var mapReaderT = function (f) {
+    return function (v) {
+        return function ($68) {
+            return f(v($68));
+        };
+    };
+};
+var functorReaderT = function (dictFunctor) {
+    return new Data_Functor.Functor(function ($69) {
+        return mapReaderT(Data_Functor.map(dictFunctor)($69));
+    });
+};
+var distributiveReaderT = function (dictDistributive) {
+    return new Data_Distributive.Distributive(function () {
+        return functorReaderT(dictDistributive.Functor0());
+    }, function (dictFunctor) {
+        return function (f) {
+            return function ($70) {
+                return Data_Distributive.distribute(distributiveReaderT(dictDistributive))(dictFunctor)(Data_Functor.map(dictFunctor)(f)($70));
+            };
+        };
+    }, function (dictFunctor) {
+        return function (a) {
+            return function (e) {
+                return Data_Distributive.collect(dictDistributive)(dictFunctor)(function (r) {
+                    return r(e);
+                })(a);
+            };
+        };
+    });
+};
+var applyReaderT = function (dictApply) {
+    return new Control_Apply.Apply(function () {
+        return functorReaderT(dictApply.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return function (r) {
+                return Control_Apply.apply(dictApply)(v(r))(v1(r));
+            };
+        };
+    });
+};
+var bindReaderT = function (dictBind) {
+    return new Control_Bind.Bind(function () {
+        return applyReaderT(dictBind.Apply0());
+    }, function (v) {
+        return function (k) {
+            return function (r) {
+                return Control_Bind.bind(dictBind)(v(r))(function (a) {
+                    var v1 = k(a);
+                    return v1(r);
+                });
+            };
+        };
+    });
+};
+var semigroupReaderT = function (dictApply) {
+    return function (dictSemigroup) {
+        return new Data_Semigroup.Semigroup(Control_Apply.lift2(applyReaderT(dictApply))(Data_Semigroup.append(dictSemigroup)));
+    };
+};
+var applicativeReaderT = function (dictApplicative) {
+    return new Control_Applicative.Applicative(function () {
+        return applyReaderT(dictApplicative.Apply0());
+    }, function ($71) {
+        return ReaderT(Data_Function["const"](Control_Applicative.pure(dictApplicative)($71)));
+    });
+};
+var monadReaderT = function (dictMonad) {
+    return new Control_Monad.Monad(function () {
+        return applicativeReaderT(dictMonad.Applicative0());
+    }, function () {
+        return bindReaderT(dictMonad.Bind1());
+    });
+};
+var monadAskReaderT = function (dictMonad) {
+    return new Control_Monad_Reader_Class.MonadAsk(function () {
+        return monadReaderT(dictMonad);
+    }, Control_Applicative.pure(dictMonad.Applicative0()));
+};
+var monadReaderReaderT = function (dictMonad) {
+    return new Control_Monad_Reader_Class.MonadReader(function () {
+        return monadAskReaderT(dictMonad);
+    }, withReaderT);
+};
+var monadContReaderT = function (dictMonadCont) {
+    return new Control_Monad_Cont_Class.MonadCont(function () {
+        return monadReaderT(dictMonadCont.Monad0());
+    }, function (f) {
+        return function (r) {
+            return Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
+                var v = f(function ($72) {
+                    return ReaderT(Data_Function["const"](c($72)));
+                });
+                return v(r);
+            });
+        };
+    });
+};
+var monadEffReader = function (dictMonadEff) {
+    return new Control_Monad_Eff_Class.MonadEff(function () {
+        return monadReaderT(dictMonadEff.Monad0());
+    }, function ($73) {
+        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($73));
+    });
+};
+var monadRecReaderT = function (dictMonadRec) {
+    return new Control_Monad_Rec_Class.MonadRec(function () {
+        return monadReaderT(dictMonadRec.Monad0());
+    }, function (k) {
+        return function (a) {
+            var k$prime = function (r) {
+                return function (a$prime) {
+                    var v = k(a$prime);
+                    return Control_Bind.bindFlipped((dictMonadRec.Monad0()).Bind1())(Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0()))(v(r));
+                };
+            };
+            return function (r) {
+                return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(k$prime(r))(a);
+            };
+        };
+    });
+};
+var monadStateReaderT = function (dictMonadState) {
+    return new Control_Monad_State_Class.MonadState(function () {
+        return monadReaderT(dictMonadState.Monad0());
+    }, function ($74) {
+        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)($74));
+    });
+};
+var monadTellReaderT = function (dictMonadTell) {
+    return new Control_Monad_Writer_Class.MonadTell(function () {
+        return monadReaderT(dictMonadTell.Monad0());
+    }, function ($75) {
+        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($75));
+    });
+};
+var monadWriterReaderT = function (dictMonadWriter) {
+    return new Control_Monad_Writer_Class.MonadWriter(function () {
+        return monadTellReaderT(dictMonadWriter.MonadTell0());
+    }, mapReaderT(Control_Monad_Writer_Class.listen(dictMonadWriter)), mapReaderT(Control_Monad_Writer_Class.pass(dictMonadWriter)));
+};
+var monadThrowReaderT = function (dictMonadThrow) {
+    return new Control_Monad_Error_Class.MonadThrow(function () {
+        return monadReaderT(dictMonadThrow.Monad0());
+    }, function ($76) {
+        return Control_Monad_Trans_Class.lift(monadTransReaderT)(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)($76));
+    });
+};
+var monadErrorReaderT = function (dictMonadError) {
+    return new Control_Monad_Error_Class.MonadError(function () {
+        return monadThrowReaderT(dictMonadError.MonadThrow0());
+    }, function (v) {
+        return function (h) {
+            return function (r) {
+                return Control_Monad_Error_Class.catchError(dictMonadError)(v(r))(function (e) {
+                    var v1 = h(e);
+                    return v1(r);
+                });
+            };
+        };
+    });
+};
+var monoidReaderT = function (dictApplicative) {
+    return function (dictMonoid) {
+        return new Data_Monoid.Monoid(function () {
+            return semigroupReaderT(dictApplicative.Apply0())(dictMonoid.Semigroup0());
+        }, Control_Applicative.pure(applicativeReaderT(dictApplicative))(Data_Monoid.mempty(dictMonoid)));
+    };
+};
+var altReaderT = function (dictAlt) {
+    return new Control_Alt.Alt(function () {
+        return functorReaderT(dictAlt.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return function (r) {
+                return Control_Alt.alt(dictAlt)(v(r))(v1(r));
+            };
+        };
+    });
+};
+var plusReaderT = function (dictPlus) {
+    return new Control_Plus.Plus(function () {
+        return altReaderT(dictPlus.Alt0());
+    }, Data_Function["const"](Control_Plus.empty(dictPlus)));
+};
+var alternativeReaderT = function (dictAlternative) {
+    return new Control_Alternative.Alternative(function () {
+        return applicativeReaderT(dictAlternative.Applicative0());
+    }, function () {
+        return plusReaderT(dictAlternative.Plus1());
+    });
+};
+var monadZeroReaderT = function (dictMonadZero) {
+    return new Control_MonadZero.MonadZero(function () {
+        return alternativeReaderT(dictMonadZero.Alternative1());
+    }, function () {
+        return monadReaderT(dictMonadZero.Monad0());
+    });
+};
+var monadPlusReaderT = function (dictMonadPlus) {
+    return new Control_MonadPlus.MonadPlus(function () {
+        return monadZeroReaderT(dictMonadPlus.MonadZero0());
+    });
+};
+module.exports = {
+    ReaderT: ReaderT, 
+    mapReaderT: mapReaderT, 
+    runReaderT: runReaderT, 
+    withReaderT: withReaderT, 
+    newtypeReaderT: newtypeReaderT, 
+    functorReaderT: functorReaderT, 
+    applyReaderT: applyReaderT, 
+    applicativeReaderT: applicativeReaderT, 
+    altReaderT: altReaderT, 
+    plusReaderT: plusReaderT, 
+    alternativeReaderT: alternativeReaderT, 
+    bindReaderT: bindReaderT, 
+    monadReaderT: monadReaderT, 
+    monadZeroReaderT: monadZeroReaderT, 
+    semigroupReaderT: semigroupReaderT, 
+    monoidReaderT: monoidReaderT, 
+    monadPlusReaderT: monadPlusReaderT, 
+    monadTransReaderT: monadTransReaderT, 
+    monadEffReader: monadEffReader, 
+    monadContReaderT: monadContReaderT, 
+    monadThrowReaderT: monadThrowReaderT, 
+    monadErrorReaderT: monadErrorReaderT, 
+    monadAskReaderT: monadAskReaderT, 
+    monadReaderReaderT: monadReaderReaderT, 
+    monadStateReaderT: monadStateReaderT, 
+    monadTellReaderT: monadTellReaderT, 
+    monadWriterReaderT: monadWriterReaderT, 
+    distributiveReaderT: distributiveReaderT, 
+    monadRecReaderT: monadRecReaderT
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Control.Monad.Cont.Class":57,"../Control.Monad.Eff.Class":59,"../Control.Monad.Error.Class":72,"../Control.Monad.Reader.Class":76,"../Control.Monad.Rec.Class":78,"../Control.Monad.State.Class":81,"../Control.Monad.Trans.Class":84,"../Control.Monad.Writer.Class":85,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Distributive":136,"../Data.Function":151,"../Data.Functor":157,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Semigroup":237,"../Prelude":278}],78:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Unsafe = require("../Control.Monad.Eff.Unsafe");
+var Control_Monad_ST = require("../Control.Monad.ST");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Either = require("../Data.Either");
+var Data_Functor = require("../Data.Functor");
+var Data_Identity = require("../Data.Identity");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Unit = require("../Data.Unit");
+var Partial_Unsafe = require("../Partial.Unsafe");
+var Prelude = require("../Prelude");
+var Loop = (function () {
+    function Loop(value0) {
+        this.value0 = value0;
+    };
+    Loop.create = function (value0) {
+        return new Loop(value0);
+    };
+    return Loop;
+})();
+var Done = (function () {
+    function Done(value0) {
+        this.value0 = value0;
+    };
+    Done.create = function (value0) {
+        return new Done(value0);
+    };
+    return Done;
+})();
+var MonadRec = function (Monad0, tailRecM) {
+    this.Monad0 = Monad0;
+    this.tailRecM = tailRecM;
+};
+var tailRecM = function (dict) {
+    return dict.tailRecM;
+};
+var tailRecM2 = function (dictMonadRec) {
+    return function (f) {
+        return function (a) {
+            return function (b) {
+                return tailRecM(dictMonadRec)(function (o) {
+                    return f(o.a)(o.b);
+                })({
+                    a: a, 
+                    b: b
+                });
+            };
+        };
+    };
+};
+var tailRecM3 = function (dictMonadRec) {
+    return function (f) {
+        return function (a) {
+            return function (b) {
+                return function (c) {
+                    return tailRecM(dictMonadRec)(function (o) {
+                        return f(o.a)(o.b)(o.c);
+                    })({
+                        a: a, 
+                        b: b, 
+                        c: c
+                    });
+                };
+            };
+        };
+    };
+};
+var tailRecEff = function (f) {
+    return function (a) {
+        var fromDone = function (v) {
+            var __unused = function (dictPartial1) {
+                return function ($dollar16) {
+                    return $dollar16;
+                };
+            };
+            return __unused()((function () {
+                if (v instanceof Done) {
+                    return v.value0;
+                };
+                throw new Error("Failed pattern match at Control.Monad.Rec.Class line 141, column 28 - line 141, column 42: " + [ v.constructor.name ]);
+            })());
+        };
+        var f$prime = function ($52) {
+            return Control_Monad_Eff_Unsafe.unsafeCoerceEff(f($52));
+        };
+        return function __do() {
+            var v = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_ST.newSTRef)(f$prime(a))();
+            (function () {
+                while (!(function __do() {
+                    var v1 = v.value;
+                    if (v1 instanceof Loop) {
+                        var v2 = f$prime(v1.value0)();
+                        var v3 = v.value = v2;
+                        return false;
+                    };
+                    if (v1 instanceof Done) {
+                        return true;
+                    };
+                    throw new Error("Failed pattern match at Control.Monad.Rec.Class line 130, column 5 - line 135, column 26: " + [ v1.constructor.name ]);
+                })()) {
+
+                };
+                return {};
+            })();
+            return Data_Functor.map(Control_Monad_Eff.functorEff)(fromDone)(Control_Monad_ST.readSTRef(v))();
+        };
+    };
+};
+var tailRec = function (f) {
+    var go = function (__copy_v) {
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v) {
+            if (v instanceof Loop) {
+                __copy_v = f(v.value0);
+                return;
+            };
+            if (v instanceof Done) {
+                __tco_done = true;
+                return v.value0;
+            };
+            throw new Error("Failed pattern match at Control.Monad.Rec.Class line 94, column 13 - line 97, column 18: " + [ v.constructor.name ]);
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    return function ($53) {
+        return go(f($53));
+    };
+};
+var monadRecMaybe = new MonadRec(function () {
+    return Data_Maybe.monadMaybe;
+}, function (f) {
+    return function (a0) {
+        var g = function (v) {
+            if (v instanceof Data_Maybe.Nothing) {
+                return new Done(Data_Maybe.Nothing.value);
+            };
+            if (v instanceof Data_Maybe.Just && v.value0 instanceof Loop) {
+                return new Loop(f(v.value0.value0));
+            };
+            if (v instanceof Data_Maybe.Just && v.value0 instanceof Done) {
+                return new Done(new Data_Maybe.Just(v.value0.value0));
+            };
+            throw new Error("Failed pattern match at Control.Monad.Rec.Class line 120, column 7 - line 120, column 31: " + [ v.constructor.name ]);
+        };
+        return tailRec(g)(f(a0));
+    };
+});
+var monadRecIdentity = new MonadRec(function () {
+    return Data_Identity.monadIdentity;
+}, function (f) {
+    var runIdentity = function (v) {
+        return v;
+    };
+    return function ($54) {
+        return Data_Identity.Identity(tailRec(function ($55) {
+            return runIdentity(f($55));
+        })($54));
+    };
+});
+var monadRecFunction = new MonadRec(function () {
+    return Control_Monad.monadFn;
+}, function (f) {
+    return function (a0) {
+        return function (e) {
+            return tailRec(function (a) {
+                return f(a)(e);
+            })(a0);
+        };
+    };
+});
+var monadRecEither = new MonadRec(function () {
+    return Data_Either.monadEither;
+}, function (f) {
+    return function (a0) {
+        var g = function (v) {
+            if (v instanceof Data_Either.Left) {
+                return new Done(new Data_Either.Left(v.value0));
+            };
+            if (v instanceof Data_Either.Right && v.value0 instanceof Loop) {
+                return new Loop(f(v.value0.value0));
+            };
+            if (v instanceof Data_Either.Right && v.value0 instanceof Done) {
+                return new Done(new Data_Either.Right(v.value0.value0));
+            };
+            throw new Error("Failed pattern match at Control.Monad.Rec.Class line 112, column 7 - line 112, column 33: " + [ v.constructor.name ]);
+        };
+        return tailRec(g)(f(a0));
+    };
+});
+var monadRecEff = new MonadRec(function () {
+    return Control_Monad_Eff.monadEff;
+}, tailRecEff);
+var functorStep = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        if (v instanceof Loop) {
+            return new Loop(v.value0);
+        };
+        if (v instanceof Done) {
+            return new Done(f(v.value0));
+        };
+        throw new Error("Failed pattern match at Control.Monad.Rec.Class line 29, column 3 - line 29, column 26: " + [ f.constructor.name, v.constructor.name ]);
+    };
+});
+var forever = function (dictMonadRec) {
+    return function (ma) {
+        return tailRecM(dictMonadRec)(function (u) {
+            return Data_Functor.voidRight((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(new Loop(u))(ma);
+        })(Data_Unit.unit);
+    };
+};
+var bifunctorStep = new Data_Bifunctor.Bifunctor(function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v2 instanceof Loop) {
+                return new Loop(v(v2.value0));
+            };
+            if (v2 instanceof Done) {
+                return new Done(v1(v2.value0));
+            };
+            throw new Error("Failed pattern match at Control.Monad.Rec.Class line 33, column 3 - line 33, column 34: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+        };
+    };
+});
+module.exports = {
+    Loop: Loop, 
+    Done: Done, 
+    MonadRec: MonadRec, 
+    forever: forever, 
+    tailRec: tailRec, 
+    tailRecM: tailRecM, 
+    tailRecM2: tailRecM2, 
+    tailRecM3: tailRecM3, 
+    functorStep: functorStep, 
+    bifunctorStep: bifunctorStep, 
+    monadRecIdentity: monadRecIdentity, 
+    monadRecEff: monadRecEff, 
+    monadRecFunction: monadRecFunction, 
+    monadRecEither: monadRecEither, 
+    monadRecMaybe: monadRecMaybe
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad":87,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Unsafe":69,"../Control.Monad.ST":80,"../Control.Semigroupoid":93,"../Data.Bifunctor":128,"../Data.Either":138,"../Data.Functor":157,"../Data.Identity":163,"../Data.Maybe":204,"../Data.Unit":259,"../Partial.Unsafe":275,"../Prelude":278}],79:[function(require,module,exports){
+"use strict";
+
+exports.newSTRef = function (val) {
+  return function () {
+    return { value: val };
+  };
+};
+
+exports.readSTRef = function (ref) {
+  return function () {
+    return ref.value;
+  };
+};
+
+exports.modifySTRef = function (ref) {
+  return function (f) {
+    return function () {
+      return ref.value = f(ref.value); // eslint-disable-line no-return-assign
+    };
+  };
+};
+
+exports.writeSTRef = function (ref) {
+  return function (a) {
+    return function () {
+      return ref.value = a; // eslint-disable-line no-return-assign
+    };
+  };
+};
+
+exports.runST = function (f) {
+  return f;
+};
+
+},{}],80:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var pureST = function (st) {
+    return Control_Monad_Eff.runPure($foreign.runST(st));
+};
+module.exports = {
+    pureST: pureST, 
+    modifySTRef: $foreign.modifySTRef, 
+    newSTRef: $foreign.newSTRef, 
+    readSTRef: $foreign.readSTRef, 
+    runST: $foreign.runST, 
+    writeSTRef: $foreign.writeSTRef
+};
+
+},{"../Control.Monad.Eff":71,"./foreign":79}],81:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var MonadState = function (Monad0, state) {
+    this.Monad0 = Monad0;
+    this.state = state;
+};
+var state = function (dict) {
+    return dict.state;
+};
+var put = function (dictMonadState) {
+    return function (s) {
+        return state(dictMonadState)(function (v) {
+            return new Data_Tuple.Tuple(Data_Unit.unit, s);
+        });
+    };
+};
+var modify = function (dictMonadState) {
+    return function (f) {
+        return state(dictMonadState)(function (s) {
+            return new Data_Tuple.Tuple(Data_Unit.unit, f(s));
+        });
+    };
+};
+var gets = function (dictMonadState) {
+    return function (f) {
+        return state(dictMonadState)(function (s) {
+            return new Data_Tuple.Tuple(f(s), s);
+        });
+    };
+};
+var get = function (dictMonadState) {
+    return state(dictMonadState)(function (s) {
+        return new Data_Tuple.Tuple(s, s);
+    });
+};
+module.exports = {
+    MonadState: MonadState, 
+    get: get, 
+    gets: gets, 
+    modify: modify, 
+    put: put, 
+    state: state
+};
+
+},{"../Data.Tuple":255,"../Data.Unit":259,"../Prelude":278}],82:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
+var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var StateT = function (x) {
+    return x;
+};
+var withStateT = function (f) {
+    return function (v) {
+        return function ($107) {
+            return v(f($107));
+        };
+    };
+};
+var runStateT = function (v) {
+    return v;
+};
+var newtypeStateT = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, StateT);
+var monadTransStateT = new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
+    return function (m) {
+        return function (s) {
+            return Control_Bind.bind(dictMonad.Bind1())(m)(function (v) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(v, s));
+            });
+        };
+    };
+});
+var mapStateT = function (f) {
+    return function (v) {
+        return function ($108) {
+            return f(v($108));
+        };
+    };
+};
+var lazyStateT = new Control_Lazy.Lazy(function (f) {
+    return function (s) {
+        var v = f(Data_Unit.unit);
+        return v(s);
+    };
+});
+var functorStateT = function (dictFunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return function (v) {
+            return function (s) {
+                return Data_Functor.map(dictFunctor)(function (v1) {
+                    return new Data_Tuple.Tuple(f(v1.value0), v1.value1);
+                })(v(s));
+            };
+        };
+    });
+};
+var execStateT = function (dictFunctor) {
+    return function (v) {
+        return function (s) {
+            return Data_Functor.map(dictFunctor)(Data_Tuple.snd)(v(s));
+        };
+    };
+};
+var evalStateT = function (dictFunctor) {
+    return function (v) {
+        return function (s) {
+            return Data_Functor.map(dictFunctor)(Data_Tuple.fst)(v(s));
+        };
+    };
+};
+var monadStateT = function (dictMonad) {
+    return new Control_Monad.Monad(function () {
+        return applicativeStateT(dictMonad);
+    }, function () {
+        return bindStateT(dictMonad);
+    });
+};
+var bindStateT = function (dictMonad) {
+    return new Control_Bind.Bind(function () {
+        return applyStateT(dictMonad);
+    }, function (v) {
+        return function (f) {
+            return function (s) {
+                return Control_Bind.bind(dictMonad.Bind1())(v(s))(function (v1) {
+                    var v3 = f(v1.value0);
+                    return v3(v1.value1);
+                });
+            };
+        };
+    });
+};
+var applyStateT = function (dictMonad) {
+    return new Control_Apply.Apply(function () {
+        return functorStateT(((dictMonad.Bind1()).Apply0()).Functor0());
+    }, Control_Monad.ap(monadStateT(dictMonad)));
+};
+var applicativeStateT = function (dictMonad) {
+    return new Control_Applicative.Applicative(function () {
+        return applyStateT(dictMonad);
+    }, function (a) {
+        return function (s) {
+            return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(a, s));
+        };
+    });
+};
+var monadAskStateT = function (dictMonadAsk) {
+    return new Control_Monad_Reader_Class.MonadAsk(function () {
+        return monadStateT(dictMonadAsk.Monad0());
+    }, Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
+};
+var monadReaderStateT = function (dictMonadReader) {
+    return new Control_Monad_Reader_Class.MonadReader(function () {
+        return monadAskStateT(dictMonadReader.MonadAsk0());
+    }, function ($109) {
+        return mapStateT(Control_Monad_Reader_Class.local(dictMonadReader)($109));
+    });
+};
+var monadContStateT = function (dictMonadCont) {
+    return new Control_Monad_Cont_Class.MonadCont(function () {
+        return monadStateT(dictMonadCont.Monad0());
+    }, function (f) {
+        return function (s) {
+            return Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
+                var v = f(function (a) {
+                    return function (s$prime) {
+                        return c(new Data_Tuple.Tuple(a, s$prime));
+                    };
+                });
+                return v(s);
+            });
+        };
+    });
+};
+var monadEffState = function (dictMonadEff) {
+    return new Control_Monad_Eff_Class.MonadEff(function () {
+        return monadStateT(dictMonadEff.Monad0());
+    }, function ($110) {
+        return Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($110));
+    });
+};
+var monadRecStateT = function (dictMonadRec) {
+    return new Control_Monad_Rec_Class.MonadRec(function () {
+        return monadStateT(dictMonadRec.Monad0());
+    }, function (f) {
+        return function (a) {
+            var f$prime = function (v) {
+                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
+                    var v1 = f(v.value0);
+                    return v1;
+                })()(v.value1))(function (v1) {
+                    return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
+                        if (v1.value0 instanceof Control_Monad_Rec_Class.Loop) {
+                            return new Control_Monad_Rec_Class.Loop(new Data_Tuple.Tuple(v1.value0.value0, v1.value1));
+                        };
+                        if (v1.value0 instanceof Control_Monad_Rec_Class.Done) {
+                            return new Control_Monad_Rec_Class.Done(new Data_Tuple.Tuple(v1.value0.value0, v1.value1));
+                        };
+                        throw new Error("Failed pattern match at Control.Monad.State.Trans line 88, column 16 - line 90, column 40: " + [ v1.value0.constructor.name ]);
+                    })());
+                });
+            };
+            return function (s) {
+                return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(f$prime)(new Data_Tuple.Tuple(a, s));
+            };
+        };
+    });
+};
+var monadStateStateT = function (dictMonad) {
+    return new Control_Monad_State_Class.MonadState(function () {
+        return monadStateT(dictMonad);
+    }, function (f) {
+        return StateT(function ($111) {
+            return Control_Applicative.pure(dictMonad.Applicative0())(f($111));
+        });
+    });
+};
+var monadTellStateT = function (dictMonadTell) {
+    return new Control_Monad_Writer_Class.MonadTell(function () {
+        return monadStateT(dictMonadTell.Monad0());
+    }, function ($112) {
+        return Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadTell.Monad0())(Control_Monad_Writer_Class.tell(dictMonadTell)($112));
+    });
+};
+var monadWriterStateT = function (dictMonadWriter) {
+    return new Control_Monad_Writer_Class.MonadWriter(function () {
+        return monadTellStateT(dictMonadWriter.MonadTell0());
+    }, function (m) {
+        return function (s) {
+            return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(Control_Monad_Writer_Class.listen(dictMonadWriter)(m(s)))(function (v) {
+                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value0, v.value1), v.value0.value1));
+            });
+        };
+    }, function (m) {
+        return function (s) {
+            return Control_Monad_Writer_Class.pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m(s))(function (v) {
+                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value0, v.value1), v.value0.value1));
+            }));
+        };
+    });
+};
+var monadThrowStateT = function (dictMonadThrow) {
+    return new Control_Monad_Error_Class.MonadThrow(function () {
+        return monadStateT(dictMonadThrow.Monad0());
+    }, function (e) {
+        return Control_Monad_Trans_Class.lift(monadTransStateT)(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)(e));
+    });
+};
+var monadErrorStateT = function (dictMonadError) {
+    return new Control_Monad_Error_Class.MonadError(function () {
+        return monadThrowStateT(dictMonadError.MonadThrow0());
+    }, function (v) {
+        return function (h) {
+            return function (s) {
+                return Control_Monad_Error_Class.catchError(dictMonadError)(v(s))(function (e) {
+                    var v1 = h(e);
+                    return v1(s);
+                });
+            };
+        };
+    });
+};
+var altStateT = function (dictMonad) {
+    return function (dictAlt) {
+        return new Control_Alt.Alt(function () {
+            return functorStateT(dictAlt.Functor0());
+        }, function (v) {
+            return function (v1) {
+                return function (s) {
+                    return Control_Alt.alt(dictAlt)(v(s))(v1(s));
+                };
+            };
+        });
+    };
+};
+var plusStateT = function (dictMonad) {
+    return function (dictPlus) {
+        return new Control_Plus.Plus(function () {
+            return altStateT(dictMonad)(dictPlus.Alt0());
+        }, function (v) {
+            return Control_Plus.empty(dictPlus);
+        });
+    };
+};
+var alternativeStateT = function (dictMonad) {
+    return function (dictAlternative) {
+        return new Control_Alternative.Alternative(function () {
+            return applicativeStateT(dictMonad);
+        }, function () {
+            return plusStateT(dictMonad)(dictAlternative.Plus1());
+        });
+    };
+};
+var monadZeroStateT = function (dictMonadZero) {
+    return new Control_MonadZero.MonadZero(function () {
+        return alternativeStateT(dictMonadZero.Monad0())(dictMonadZero.Alternative1());
+    }, function () {
+        return monadStateT(dictMonadZero.Monad0());
+    });
+};
+var monadPlusStateT = function (dictMonadPlus) {
+    return new Control_MonadPlus.MonadPlus(function () {
+        return monadZeroStateT(dictMonadPlus.MonadZero0());
+    });
+};
+module.exports = {
+    StateT: StateT, 
+    evalStateT: evalStateT, 
+    execStateT: execStateT, 
+    mapStateT: mapStateT, 
+    runStateT: runStateT, 
+    withStateT: withStateT, 
+    newtypeStateT: newtypeStateT, 
+    functorStateT: functorStateT, 
+    applyStateT: applyStateT, 
+    applicativeStateT: applicativeStateT, 
+    altStateT: altStateT, 
+    plusStateT: plusStateT, 
+    alternativeStateT: alternativeStateT, 
+    bindStateT: bindStateT, 
+    monadStateT: monadStateT, 
+    monadRecStateT: monadRecStateT, 
+    monadZeroStateT: monadZeroStateT, 
+    monadPlusStateT: monadPlusStateT, 
+    monadTransStateT: monadTransStateT, 
+    lazyStateT: lazyStateT, 
+    monadEffState: monadEffState, 
+    monadContStateT: monadContStateT, 
+    monadThrowStateT: monadThrowStateT, 
+    monadErrorStateT: monadErrorStateT, 
+    monadAskStateT: monadAskStateT, 
+    monadReaderStateT: monadReaderStateT, 
+    monadStateStateT: monadStateStateT, 
+    monadTellStateT: monadTellStateT, 
+    monadWriterStateT: monadWriterStateT
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Lazy":51,"../Control.Monad":87,"../Control.Monad.Cont.Class":57,"../Control.Monad.Eff.Class":59,"../Control.Monad.Error.Class":72,"../Control.Monad.Reader.Class":76,"../Control.Monad.Rec.Class":78,"../Control.Monad.State.Class":81,"../Control.Monad.Trans.Class":84,"../Control.Monad.Writer.Class":85,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Functor":157,"../Data.Newtype":215,"../Data.Tuple":255,"../Data.Unit":259,"../Prelude":278}],83:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_State_Trans = require("../Control.Monad.State.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Identity = require("../Data.Identity");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var withState = Control_Monad_State_Trans.withStateT;
+var runState = function (v) {
+    return function ($16) {
+        return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(v($16));
+    };
+};
+var mapState = function (f) {
+    return Control_Monad_State_Trans.mapStateT(function ($17) {
+        return Data_Identity.Identity(f(Data_Newtype.unwrap(Data_Identity.newtypeIdentity)($17)));
+    });
+};
+var execState = function (v) {
+    return function (s) {
+        var v1 = v(s);
+        return v1.value1;
+    };
+};
+var evalState = function (v) {
+    return function (s) {
+        var v1 = v(s);
+        return v1.value0;
+    };
+};
+module.exports = {
+    evalState: evalState, 
+    execState: execState, 
+    mapState: mapState, 
+    runState: runState, 
+    withState: withState
+};
+
+},{"../Control.Monad.State.Class":81,"../Control.Monad.State.Trans":82,"../Control.Semigroupoid":93,"../Data.Identity":163,"../Data.Newtype":215,"../Data.Tuple":255,"../Prelude":278}],84:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Prelude = require("../Prelude");
+var MonadTrans = function (lift) {
+    this.lift = lift;
+};
+var lift = function (dict) {
+    return dict.lift;
+};
+module.exports = {
+    MonadTrans: MonadTrans, 
+    lift: lift
+};
+
+},{"../Prelude":278}],85:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Data_Function = require("../Data.Function");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var MonadTell = function (Monad0, tell) {
+    this.Monad0 = Monad0;
+    this.tell = tell;
+};
+var MonadWriter = function (MonadTell0, listen, pass) {
+    this.MonadTell0 = MonadTell0;
+    this.listen = listen;
+    this.pass = pass;
+};
+var tell = function (dict) {
+    return dict.tell;
+};
+var pass = function (dict) {
+    return dict.pass;
+};
+var listen = function (dict) {
+    return dict.listen;
+};
+var listens = function (dictMonadWriter) {
+    return function (f) {
+        return function (m) {
+            return Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(listen(dictMonadWriter)(m))(function (v) {
+                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(v.value0, f(v.value1)));
+            });
+        };
+    };
+};
+var censor = function (dictMonadWriter) {
+    return function (f) {
+        return function (m) {
+            return pass(dictMonadWriter)(Control_Bind.bind(((dictMonadWriter.MonadTell0()).Monad0()).Bind1())(m)(function (v) {
+                return Control_Applicative.pure(((dictMonadWriter.MonadTell0()).Monad0()).Applicative0())(new Data_Tuple.Tuple(v, f));
+            }));
+        };
+    };
+};
+module.exports = {
+    MonadTell: MonadTell, 
+    MonadWriter: MonadWriter, 
+    censor: censor, 
+    listen: listen, 
+    listens: listens, 
+    pass: pass, 
+    tell: tell
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Data.Function":151,"../Data.Tuple":255,"../Prelude":278}],86:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Control_Monad_Cont_Class = require("../Control.Monad.Cont.Class");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_Trans_Class = require("../Control.Monad.Trans.Class");
+var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var WriterT = function (x) {
+    return x;
+};
+var runWriterT = function (v) {
+    return v;
+};
+var newtypeWriterT = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, WriterT);
+var monadTransWriterT = function (dictMonoid) {
+    return new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
+        return function (m) {
+            return Control_Bind.bind(dictMonad.Bind1())(m)(function (v) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(v, Data_Monoid.mempty(dictMonoid)));
+            });
+        };
+    });
+};
+var mapWriterT = function (f) {
+    return function (v) {
+        return f(v);
+    };
+};
+var functorWriterT = function (dictFunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return mapWriterT(Data_Functor.map(dictFunctor)(function (v) {
+            return new Data_Tuple.Tuple(f(v.value0), v.value1);
+        }));
+    });
+};
+var execWriterT = function (dictFunctor) {
+    return function (v) {
+        return Data_Functor.map(dictFunctor)(Data_Tuple.snd)(v);
+    };
+};
+var applyWriterT = function (dictSemigroup) {
+    return function (dictApply) {
+        return new Control_Apply.Apply(function () {
+            return functorWriterT(dictApply.Functor0());
+        }, function (v) {
+            return function (v1) {
+                var k = function (v3) {
+                    return function (v4) {
+                        return new Data_Tuple.Tuple(v3.value0(v4.value0), Data_Semigroup.append(dictSemigroup)(v3.value1)(v4.value1));
+                    };
+                };
+                return Control_Apply.apply(dictApply)(Data_Functor.map(dictApply.Functor0())(k)(v))(v1);
+            };
+        });
+    };
+};
+var bindWriterT = function (dictSemigroup) {
+    return function (dictBind) {
+        return new Control_Bind.Bind(function () {
+            return applyWriterT(dictSemigroup)(dictBind.Apply0());
+        }, function (v) {
+            return function (k) {
+                return WriterT(Control_Bind.bind(dictBind)(v)(function (v1) {
+                    var v2 = k(v1.value0);
+                    return Data_Functor.map((dictBind.Apply0()).Functor0())(function (v3) {
+                        return new Data_Tuple.Tuple(v3.value0, Data_Semigroup.append(dictSemigroup)(v1.value1)(v3.value1));
+                    })(v2);
+                }));
+            };
+        });
+    };
+};
+var applicativeWriterT = function (dictMonoid) {
+    return function (dictApplicative) {
+        return new Control_Applicative.Applicative(function () {
+            return applyWriterT(dictMonoid.Semigroup0())(dictApplicative.Apply0());
+        }, function (a) {
+            return WriterT(Control_Applicative.pure(dictApplicative)(new Data_Tuple.Tuple(a, Data_Monoid.mempty(dictMonoid))));
+        });
+    };
+};
+var monadWriterT = function (dictMonoid) {
+    return function (dictMonad) {
+        return new Control_Monad.Monad(function () {
+            return applicativeWriterT(dictMonoid)(dictMonad.Applicative0());
+        }, function () {
+            return bindWriterT(dictMonoid.Semigroup0())(dictMonad.Bind1());
+        });
+    };
+};
+var monadAskWriterT = function (dictMonoid) {
+    return function (dictMonadAsk) {
+        return new Control_Monad_Reader_Class.MonadAsk(function () {
+            return monadWriterT(dictMonoid)(dictMonadAsk.Monad0());
+        }, Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadAsk.Monad0())(Control_Monad_Reader_Class.ask(dictMonadAsk)));
+    };
+};
+var monadReaderWriterT = function (dictMonoid) {
+    return function (dictMonadReader) {
+        return new Control_Monad_Reader_Class.MonadReader(function () {
+            return monadAskWriterT(dictMonoid)(dictMonadReader.MonadAsk0());
+        }, function (f) {
+            return mapWriterT(Control_Monad_Reader_Class.local(dictMonadReader)(f));
+        });
+    };
+};
+var monadContWriterT = function (dictMonoid) {
+    return function (dictMonadCont) {
+        return new Control_Monad_Cont_Class.MonadCont(function () {
+            return monadWriterT(dictMonoid)(dictMonadCont.Monad0());
+        }, function (f) {
+            return WriterT(Control_Monad_Cont_Class.callCC(dictMonadCont)(function (c) {
+                var v = f(function (a) {
+                    return WriterT(c(new Data_Tuple.Tuple(a, Data_Monoid.mempty(dictMonoid))));
+                });
+                return v;
+            }));
+        });
+    };
+};
+var monadEffWriter = function (dictMonoid) {
+    return function (dictMonadEff) {
+        return new Control_Monad_Eff_Class.MonadEff(function () {
+            return monadWriterT(dictMonoid)(dictMonadEff.Monad0());
+        }, function ($123) {
+            return Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadEff.Monad0())(Control_Monad_Eff_Class.liftEff(dictMonadEff)($123));
+        });
+    };
+};
+var monadRecWriterT = function (dictMonoid) {
+    return function (dictMonadRec) {
+        return new Control_Monad_Rec_Class.MonadRec(function () {
+            return monadWriterT(dictMonoid)(dictMonadRec.Monad0());
+        }, function (f) {
+            return function (a) {
+                var f$prime = function (v) {
+                    return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())((function () {
+                        var v1 = f(v.value0);
+                        return v1;
+                    })())(function (v1) {
+                        return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())((function () {
+                            if (v1.value0 instanceof Control_Monad_Rec_Class.Loop) {
+                                return new Control_Monad_Rec_Class.Loop(new Data_Tuple.Tuple(v1.value0.value0, Data_Semigroup.append(dictMonoid.Semigroup0())(v.value1)(v1.value1)));
+                            };
+                            if (v1.value0 instanceof Control_Monad_Rec_Class.Done) {
+                                return new Control_Monad_Rec_Class.Done(new Data_Tuple.Tuple(v1.value0.value0, Data_Semigroup.append(dictMonoid.Semigroup0())(v.value1)(v1.value1)));
+                            };
+                            throw new Error("Failed pattern match at Control.Monad.Writer.Trans line 85, column 16 - line 87, column 47: " + [ v1.value0.constructor.name ]);
+                        })());
+                    });
+                };
+                return WriterT(Control_Monad_Rec_Class.tailRecM(dictMonadRec)(f$prime)(new Data_Tuple.Tuple(a, Data_Monoid.mempty(dictMonoid))));
+            };
+        });
+    };
+};
+var monadStateWriterT = function (dictMonoid) {
+    return function (dictMonadState) {
+        return new Control_Monad_State_Class.MonadState(function () {
+            return monadWriterT(dictMonoid)(dictMonadState.Monad0());
+        }, function (f) {
+            return Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadState.Monad0())(Control_Monad_State_Class.state(dictMonadState)(f));
+        });
+    };
+};
+var monadTellWriterT = function (dictMonoid) {
+    return function (dictMonad) {
+        return new Control_Monad_Writer_Class.MonadTell(function () {
+            return monadWriterT(dictMonoid)(dictMonad);
+        }, function ($124) {
+            return WriterT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Tuple.Tuple.create(Data_Unit.unit)($124)));
+        });
+    };
+};
+var monadWriterWriterT = function (dictMonoid) {
+    return function (dictMonad) {
+        return new Control_Monad_Writer_Class.MonadWriter(function () {
+            return monadTellWriterT(dictMonoid)(dictMonad);
+        }, function (v) {
+            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v1) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v1.value0, v1.value1), v1.value1));
+            });
+        }, function (v) {
+            return Control_Bind.bind(dictMonad.Bind1())(v)(function (v1) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Tuple.Tuple(v1.value0.value0, v1.value0.value1(v1.value1)));
+            });
+        });
+    };
+};
+var monadThrowWriterT = function (dictMonoid) {
+    return function (dictMonadThrow) {
+        return new Control_Monad_Error_Class.MonadThrow(function () {
+            return monadWriterT(dictMonoid)(dictMonadThrow.Monad0());
+        }, function (e) {
+            return Control_Monad_Trans_Class.lift(monadTransWriterT(dictMonoid))(dictMonadThrow.Monad0())(Control_Monad_Error_Class.throwError(dictMonadThrow)(e));
+        });
+    };
+};
+var monadErrorWriterT = function (dictMonoid) {
+    return function (dictMonadError) {
+        return new Control_Monad_Error_Class.MonadError(function () {
+            return monadThrowWriterT(dictMonoid)(dictMonadError.MonadThrow0());
+        }, function (v) {
+            return function (h) {
+                return WriterT(Control_Monad_Error_Class.catchError(dictMonadError)(v)(function (e) {
+                    var v1 = h(e);
+                    return v1;
+                }));
+            };
+        });
+    };
+};
+var altWriterT = function (dictAlt) {
+    return new Control_Alt.Alt(function () {
+        return functorWriterT(dictAlt.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return Control_Alt.alt(dictAlt)(v)(v1);
+        };
+    });
+};
+var plusWriterT = function (dictPlus) {
+    return new Control_Plus.Plus(function () {
+        return altWriterT(dictPlus.Alt0());
+    }, Control_Plus.empty(dictPlus));
+};
+var alternativeWriterT = function (dictMonoid) {
+    return function (dictAlternative) {
+        return new Control_Alternative.Alternative(function () {
+            return applicativeWriterT(dictMonoid)(dictAlternative.Applicative0());
+        }, function () {
+            return plusWriterT(dictAlternative.Plus1());
+        });
+    };
+};
+var monadZeroWriterT = function (dictMonoid) {
+    return function (dictMonadZero) {
+        return new Control_MonadZero.MonadZero(function () {
+            return alternativeWriterT(dictMonoid)(dictMonadZero.Alternative1());
+        }, function () {
+            return monadWriterT(dictMonoid)(dictMonadZero.Monad0());
+        });
+    };
+};
+var monadPlusWriterT = function (dictMonoid) {
+    return function (dictMonadPlus) {
+        return new Control_MonadPlus.MonadPlus(function () {
+            return monadZeroWriterT(dictMonoid)(dictMonadPlus.MonadZero0());
+        });
+    };
+};
+module.exports = {
+    WriterT: WriterT, 
+    execWriterT: execWriterT, 
+    mapWriterT: mapWriterT, 
+    runWriterT: runWriterT, 
+    newtypeWriterT: newtypeWriterT, 
+    functorWriterT: functorWriterT, 
+    applyWriterT: applyWriterT, 
+    applicativeWriterT: applicativeWriterT, 
+    altWriterT: altWriterT, 
+    plusWriterT: plusWriterT, 
+    alternativeWriterT: alternativeWriterT, 
+    bindWriterT: bindWriterT, 
+    monadWriterT: monadWriterT, 
+    monadRecWriterT: monadRecWriterT, 
+    monadZeroWriterT: monadZeroWriterT, 
+    monadPlusWriterT: monadPlusWriterT, 
+    monadTransWriterT: monadTransWriterT, 
+    monadEffWriter: monadEffWriter, 
+    monadContWriterT: monadContWriterT, 
+    monadThrowWriterT: monadThrowWriterT, 
+    monadErrorWriterT: monadErrorWriterT, 
+    monadAskWriterT: monadAskWriterT, 
+    monadReaderWriterT: monadReaderWriterT, 
+    monadStateWriterT: monadStateWriterT, 
+    monadTellWriterT: monadTellWriterT, 
+    monadWriterWriterT: monadWriterWriterT
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Control.Monad.Cont.Class":57,"../Control.Monad.Eff.Class":59,"../Control.Monad.Error.Class":72,"../Control.Monad.Reader.Class":76,"../Control.Monad.Rec.Class":78,"../Control.Monad.State.Class":81,"../Control.Monad.Trans.Class":84,"../Control.Monad.Writer.Class":85,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Functor":157,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Semigroup":237,"../Data.Tuple":255,"../Data.Unit":259,"../Prelude":278}],87:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Data_Functor = require("../Data.Functor");
+var Data_Unit = require("../Data.Unit");
+var Monad = function (Applicative0, Bind1) {
+    this.Applicative0 = Applicative0;
+    this.Bind1 = Bind1;
+};
+var whenM = function (dictMonad) {
+    return function (mb) {
+        return function (m) {
+            return Control_Bind.bind(dictMonad.Bind1())(mb)(function (v) {
+                return Control_Applicative.when(dictMonad.Applicative0())(v)(m);
+            });
+        };
+    };
+};
+var unlessM = function (dictMonad) {
+    return function (mb) {
+        return function (m) {
+            return Control_Bind.bind(dictMonad.Bind1())(mb)(function (v) {
+                return Control_Applicative.unless(dictMonad.Applicative0())(v)(m);
+            });
+        };
+    };
+};
+var monadFn = new Monad(function () {
+    return Control_Applicative.applicativeFn;
+}, function () {
+    return Control_Bind.bindFn;
+});
+var monadArray = new Monad(function () {
+    return Control_Applicative.applicativeArray;
+}, function () {
+    return Control_Bind.bindArray;
+});
+var liftM1 = function (dictMonad) {
+    return function (f) {
+        return function (a) {
+            return Control_Bind.bind(dictMonad.Bind1())(a)(function (v) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(f(v));
+            });
+        };
+    };
+};
+var ap = function (dictMonad) {
+    return function (f) {
+        return function (a) {
+            return Control_Bind.bind(dictMonad.Bind1())(f)(function (v) {
+                return Control_Bind.bind(dictMonad.Bind1())(a)(function (v1) {
+                    return Control_Applicative.pure(dictMonad.Applicative0())(v(v1));
+                });
+            });
+        };
+    };
+};
+module.exports = {
+    Monad: Monad, 
+    ap: ap, 
+    liftM1: liftM1, 
+    unlessM: unlessM, 
+    whenM: whenM, 
+    monadFn: monadFn, 
+    monadArray: monadArray
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Data.Functor":157,"../Data.Unit":259}],88:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Data_Functor = require("../Data.Functor");
+var MonadPlus = function (MonadZero0) {
+    this.MonadZero0 = MonadZero0;
+};
+var monadPlusArray = new MonadPlus(function () {
+    return Control_MonadZero.monadZeroArray;
+});
+module.exports = {
+    MonadPlus: MonadPlus, 
+    monadPlusArray: monadPlusArray
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Control.MonadZero":89,"../Control.Plus":92,"../Data.Functor":157}],89:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Control_Plus = require("../Control.Plus");
+var Data_Functor = require("../Data.Functor");
+var Data_Unit = require("../Data.Unit");
+var MonadZero = function (Alternative1, Monad0) {
+    this.Alternative1 = Alternative1;
+    this.Monad0 = Monad0;
+};
+var monadZeroArray = new MonadZero(function () {
+    return Control_Alternative.alternativeArray;
+}, function () {
+    return Control_Monad.monadArray;
+});
+var guard = function (dictMonadZero) {
+    return function (v) {
+        if (v) {
+            return Control_Applicative.pure((dictMonadZero.Alternative1()).Applicative0())(Data_Unit.unit);
+        };
+        if (!v) {
+            return Control_Plus.empty((dictMonadZero.Alternative1()).Plus1());
+        };
+        throw new Error("Failed pattern match at Control.MonadZero line 55, column 1 - line 55, column 23: " + [ v.constructor.name ]);
+    };
+};
+module.exports = {
+    MonadZero: MonadZero, 
+    guard: guard, 
+    monadZeroArray: monadZeroArray
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Control.Plus":92,"../Data.Functor":157,"../Data.Unit":259}],90:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Cont_Trans = require("../Control.Monad.Cont.Trans");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Eff_Ref = require("../Control.Monad.Eff.Ref");
+var Control_Monad_Eff_Unsafe = require("../Control.Monad.Eff.Unsafe");
+var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
+var Control_Monad_Maybe_Trans = require("../Control.Monad.Maybe.Trans");
+var Control_Monad_Reader_Trans = require("../Control.Monad.Reader.Trans");
+var Control_Monad_Writer_Trans = require("../Control.Monad.Writer.Trans");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Compose = require("../Data.Functor.Compose");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var ParCont = function (x) {
+    return x;
+};
+var Parallel = function (Applicative1, Monad0, parallel, sequential) {
+    this.Applicative1 = Applicative1;
+    this.Monad0 = Monad0;
+    this.parallel = parallel;
+    this.sequential = sequential;
+};
+var unsafeWithRef = Control_Monad_Eff_Unsafe.unsafeCoerceEff;
+var sequential = function (dict) {
+    return dict.sequential;
+};
+var parallel = function (dict) {
+    return dict.parallel;
+};
+var newtypeParCont = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, ParCont);
+var monadParWriterT = function (dictMonoid) {
+    return function (dictParallel) {
+        return new Parallel(function () {
+            return Control_Monad_Writer_Trans.applicativeWriterT(dictMonoid)(dictParallel.Applicative1());
+        }, function () {
+            return Control_Monad_Writer_Trans.monadWriterT(dictMonoid)(dictParallel.Monad0());
+        }, Control_Monad_Writer_Trans.mapWriterT(parallel(dictParallel)), Control_Monad_Writer_Trans.mapWriterT(sequential(dictParallel)));
+    };
+};
+var monadParReaderT = function (dictParallel) {
+    return new Parallel(function () {
+        return Control_Monad_Reader_Trans.applicativeReaderT(dictParallel.Applicative1());
+    }, function () {
+        return Control_Monad_Reader_Trans.monadReaderT(dictParallel.Monad0());
+    }, Control_Monad_Reader_Trans.mapReaderT(parallel(dictParallel)), Control_Monad_Reader_Trans.mapReaderT(sequential(dictParallel)));
+};
+var monadParMaybeT = function (dictParallel) {
+    return new Parallel(function () {
+        return Data_Functor_Compose.applicativeCompose(dictParallel.Applicative1())(Data_Maybe.applicativeMaybe);
+    }, function () {
+        return Control_Monad_Maybe_Trans.monadMaybeT(dictParallel.Monad0());
+    }, function (v) {
+        return parallel(dictParallel)(v);
+    }, function (v) {
+        return sequential(dictParallel)(v);
+    });
+};
+var monadParExceptT = function (dictParallel) {
+    return new Parallel(function () {
+        return Data_Functor_Compose.applicativeCompose(dictParallel.Applicative1())(Data_Either.applicativeEither);
+    }, function () {
+        return Control_Monad_Except_Trans.monadExceptT(dictParallel.Monad0());
+    }, function (v) {
+        return parallel(dictParallel)(v);
+    }, function (v) {
+        return sequential(dictParallel)(v);
+    });
+};
+var monadParParCont = function (dictMonadEff) {
+    return new Parallel(function () {
+        return applicativeParCont(dictMonadEff);
+    }, function () {
+        return Control_Monad_Cont_Trans.monadContT(dictMonadEff.Monad0());
+    }, ParCont, function (v) {
+        return v;
+    });
+};
+var functorParCont = function (dictMonadEff) {
+    return new Data_Functor.Functor(function (f) {
+        return function ($54) {
+            return parallel(monadParParCont(dictMonadEff))(Data_Functor.map(Control_Monad_Cont_Trans.functorContT((((dictMonadEff.Monad0()).Bind1()).Apply0()).Functor0()))(f)(sequential(monadParParCont(dictMonadEff))($54)));
+        };
+    });
+};
+var applyParCont = function (dictMonadEff) {
+    return new Control_Apply.Apply(function () {
+        return functorParCont(dictMonadEff);
+    }, function (v) {
+        return function (v1) {
+            return ParCont(function (k) {
+                return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.newRef(Data_Maybe.Nothing.value))))(function (v2) {
+                    return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.newRef(Data_Maybe.Nothing.value))))(function (v3) {
+                        return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Cont_Trans.runContT(v)(function (a) {
+                            return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v3))))(function (v4) {
+                                if (v4 instanceof Data_Maybe.Nothing) {
+                                    return Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v2)(new Data_Maybe.Just(a))));
+                                };
+                                if (v4 instanceof Data_Maybe.Just) {
+                                    return k(a(v4.value0));
+                                };
+                                throw new Error("Failed pattern match at Control.Parallel.Class line 81, column 7 - line 83, column 26: " + [ v4.constructor.name ]);
+                            });
+                        }))(function () {
+                            return Control_Monad_Cont_Trans.runContT(v1)(function (b) {
+                                return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v2))))(function (v4) {
+                                    if (v4 instanceof Data_Maybe.Nothing) {
+                                        return Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v3)(new Data_Maybe.Just(b))));
+                                    };
+                                    if (v4 instanceof Data_Maybe.Just) {
+                                        return k(v4.value0(b));
+                                    };
+                                    throw new Error("Failed pattern match at Control.Parallel.Class line 87, column 7 - line 89, column 26: " + [ v4.constructor.name ]);
+                                });
+                            });
+                        });
+                    });
+                });
+            });
+        };
+    });
+};
+var applicativeParCont = function (dictMonadEff) {
+    return new Control_Applicative.Applicative(function () {
+        return applyParCont(dictMonadEff);
+    }, function ($55) {
+        return parallel(monadParParCont(dictMonadEff))(Control_Applicative.pure(Control_Monad_Cont_Trans.applicativeContT((dictMonadEff.Monad0()).Applicative0()))($55));
+    });
+};
+var altParCont = function (dictMonadEff) {
+    return new Control_Alt.Alt(function () {
+        return functorParCont(dictMonadEff);
+    }, function (v) {
+        return function (v1) {
+            return ParCont(function (k) {
+                return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.newRef(false))))(function (v2) {
+                    return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Cont_Trans.runContT(v)(function (a) {
+                        return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v2))))(function (v3) {
+                            if (v3) {
+                                return Control_Applicative.pure((dictMonadEff.Monad0()).Applicative0())(Data_Unit.unit);
+                            };
+                            return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v2)(true))))(function () {
+                                return k(a);
+                            });
+                        });
+                    }))(function () {
+                        return Control_Monad_Cont_Trans.runContT(v1)(function (a) {
+                            return Control_Bind.bind((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.readRef(v2))))(function (v3) {
+                                if (v3) {
+                                    return Control_Applicative.pure((dictMonadEff.Monad0()).Applicative0())(Data_Unit.unit);
+                                };
+                                return Control_Bind.discard(Control_Bind.discardUnit)((dictMonadEff.Monad0()).Bind1())(Control_Monad_Eff_Class.liftEff(dictMonadEff)(unsafeWithRef(Control_Monad_Eff_Ref.writeRef(v2)(true))))(function () {
+                                    return k(a);
+                                });
+                            });
+                        });
+                    });
+                });
+            });
+        };
+    });
+};
+var plusParCont = function (dictMonadEff) {
+    return new Control_Plus.Plus(function () {
+        return altParCont(dictMonadEff);
+    }, ParCont(function (v) {
+        return Control_Applicative.pure((dictMonadEff.Monad0()).Applicative0())(Data_Unit.unit);
+    }));
+};
+var alternativeParCont = function (dictMonadEff) {
+    return new Control_Alternative.Alternative(function () {
+        return applicativeParCont(dictMonadEff);
+    }, function () {
+        return plusParCont(dictMonadEff);
+    });
+};
+module.exports = {
+    ParCont: ParCont, 
+    Parallel: Parallel, 
+    parallel: parallel, 
+    sequential: sequential, 
+    monadParExceptT: monadParExceptT, 
+    monadParReaderT: monadParReaderT, 
+    monadParWriterT: monadParWriterT, 
+    monadParMaybeT: monadParMaybeT, 
+    newtypeParCont: newtypeParCont, 
+    functorParCont: functorParCont, 
+    applyParCont: applyParCont, 
+    applicativeParCont: applicativeParCont, 
+    altParCont: altParCont, 
+    plusParCont: plusParCont, 
+    alternativeParCont: alternativeParCont, 
+    monadParParCont: monadParParCont
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad.Cont.Trans":58,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Class":59,"../Control.Monad.Eff.Ref":67,"../Control.Monad.Eff.Unsafe":69,"../Control.Monad.Except.Trans":73,"../Control.Monad.Maybe.Trans":75,"../Control.Monad.Reader.Trans":77,"../Control.Monad.Writer.Trans":86,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Compose":153,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Unit":259,"../Prelude":278}],91:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Parallel_Class = require("../Control.Parallel.Class");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var parTraverse_ = function (dictParallel) {
+    return function (dictFoldable) {
+        return function (f) {
+            return function ($8) {
+                return Control_Parallel_Class.sequential(dictParallel)(Data_Foldable.traverse_(dictParallel.Applicative1())(dictFoldable)(function ($9) {
+                    return Control_Parallel_Class.parallel(dictParallel)(f($9));
+                })($8));
+            };
+        };
+    };
+};
+var parTraverse = function (dictParallel) {
+    return function (dictTraversable) {
+        return function (f) {
+            return function ($10) {
+                return Control_Parallel_Class.sequential(dictParallel)(Data_Traversable.traverse(dictTraversable)(dictParallel.Applicative1())(function ($11) {
+                    return Control_Parallel_Class.parallel(dictParallel)(f($11));
+                })($10));
+            };
+        };
+    };
+};
+var parSequence_ = function (dictParallel) {
+    return function (dictFoldable) {
+        return parTraverse_(dictParallel)(dictFoldable)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var parSequence = function (dictParallel) {
+    return function (dictTraversable) {
+        return parTraverse(dictParallel)(dictTraversable)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+module.exports = {
+    parSequence: parSequence, 
+    parSequence_: parSequence_, 
+    parTraverse: parTraverse, 
+    parTraverse_: parTraverse_
+};
+
+},{"../Control.Category":47,"../Control.Parallel.Class":90,"../Control.Semigroupoid":93,"../Data.Foldable":145,"../Data.Traversable":254,"../Prelude":278}],92:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Data_Functor = require("../Data.Functor");
+var Plus = function (Alt0, empty) {
+    this.Alt0 = Alt0;
+    this.empty = empty;
+};
+var plusArray = new Plus(function () {
+    return Control_Alt.altArray;
+}, [  ]);
+var empty = function (dict) {
+    return dict.empty;
+};
+module.exports = {
+    Plus: Plus, 
+    empty: empty, 
+    plusArray: plusArray
+};
+
+},{"../Control.Alt":38,"../Data.Functor":157}],93:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Semigroupoid = function (compose) {
+    this.compose = compose;
+};
+var semigroupoidFn = new Semigroupoid(function (f) {
+    return function (g) {
+        return function (x) {
+            return f(g(x));
+        };
+    };
+});
+var compose = function (dict) {
+    return dict.compose;
+};
+var composeFlipped = function (dictSemigroupoid) {
+    return function (f) {
+        return function (g) {
+            return compose(dictSemigroupoid)(g)(f);
+        };
+    };
+};
+module.exports = {
+    Semigroupoid: Semigroupoid, 
+    compose: compose, 
+    composeFlipped: composeFlipped, 
+    semigroupoidFn: semigroupoidFn
+};
+
+},{}],94:[function(require,module,exports){
+/* global EventTarget */
+"use strict";
+
+exports._readEventTarget = function (left) {
+  return function (right) {
+    return function (foreign) {
+      return foreign instanceof EventTarget ? right(foreign) : left("Value is not an EventTarget");
+    };
+  };
+};
+
+},{}],95:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Foreign = require("../Data.Foreign");
+var Data_Identity = require("../Data.Identity");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var EventType = function (x) {
+    return x;
+};
+var wheelEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var uiEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var touchEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var readWheelEvent = Data_Foreign.unsafeReadTagged("WheelEvent");
+var readUIEvent = Data_Foreign.unsafeReadTagged("UIEvent");
+var readTouchEvent = Data_Foreign.unsafeReadTagged("TouchEvent");
+var readProgressEvent = Data_Foreign.unsafeReadTagged("ProgressEvent");
+var readMouseEvent = Data_Foreign.unsafeReadTagged("MouseEvent");
+var readKeyboardEvent = Data_Foreign.unsafeReadTagged("KeyboardEvent");
+var readInputEvent = Data_Foreign.unsafeReadTagged("InputEvent");
+var readFocusEvent = Data_Foreign.unsafeReadTagged("FocusEvent");
+var readEventTarget = function ($3) {
+    return Data_Newtype.wrap(Control_Monad_Except_Trans.newtypeExceptT)(Data_Newtype.wrap(Data_Identity.newtypeIdentity)(Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function ($4) {
+        return Control_Applicative.pure(Data_List_Types.applicativeNonEmptyList)(Data_Foreign.ForeignError.create($4));
+    })($foreign._readEventTarget(Data_Either.Left.create)(Data_Either.Right.create)($3))));
+};
+var readCustomEvent = Data_Foreign.unsafeReadTagged("CustomEvent");
+var readCompositionEvent = Data_Foreign.unsafeReadTagged("CompositionEvent");
+var readClipboardEvent = Data_Foreign.unsafeReadTagged("ClipboardEvent");
+var progressEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var ordEventType = Data_Ord.ordString;
+var newtypeEventType = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, EventType);
+var mouseEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var keyboardEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var inputEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var focusEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var eqEventType = Data_Eq.eqString;
+var customEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var compositionEventToEvent = Unsafe_Coerce.unsafeCoerce;
+var clipboardEventToEvent = Unsafe_Coerce.unsafeCoerce;
+module.exports = {
+    EventType: EventType, 
+    clipboardEventToEvent: clipboardEventToEvent, 
+    compositionEventToEvent: compositionEventToEvent, 
+    customEventToEvent: customEventToEvent, 
+    focusEventToEvent: focusEventToEvent, 
+    inputEventToEvent: inputEventToEvent, 
+    keyboardEventToEvent: keyboardEventToEvent, 
+    mouseEventToEvent: mouseEventToEvent, 
+    progressEventToEvent: progressEventToEvent, 
+    readClipboardEvent: readClipboardEvent, 
+    readCompositionEvent: readCompositionEvent, 
+    readCustomEvent: readCustomEvent, 
+    readEventTarget: readEventTarget, 
+    readFocusEvent: readFocusEvent, 
+    readInputEvent: readInputEvent, 
+    readKeyboardEvent: readKeyboardEvent, 
+    readMouseEvent: readMouseEvent, 
+    readProgressEvent: readProgressEvent, 
+    readTouchEvent: readTouchEvent, 
+    readUIEvent: readUIEvent, 
+    readWheelEvent: readWheelEvent, 
+    touchEventToEvent: touchEventToEvent, 
+    uiEventToEvent: uiEventToEvent, 
+    wheelEventToEvent: wheelEventToEvent, 
+    newtypeEventType: newtypeEventType, 
+    eqEventType: eqEventType, 
+    ordEventType: ordEventType
+};
+
+},{"../Control.Applicative":40,"../Control.Monad.Except.Trans":73,"../Control.Semigroupoid":93,"../Data.Bifunctor":128,"../Data.Either":138,"../Data.Eq":140,"../Data.Foreign":147,"../Data.Identity":163,"../Data.List.Types":199,"../Data.Newtype":215,"../Data.Ord":222,"../Prelude":278,"../Unsafe.Coerce":282,"./foreign":94}],96:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var DOM_Event_Types = require("../DOM.Event.Types");
+var Data_Foreign = require("../Data.Foreign");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var readFileList = Data_Foreign.unsafeReadTagged("FileList");
+var fileToBlob = Unsafe_Coerce.unsafeCoerce;
+var fileReaderToEventTarget = Unsafe_Coerce.unsafeCoerce;
+module.exports = {
+    fileReaderToEventTarget: fileReaderToEventTarget, 
+    fileToBlob: fileToBlob, 
+    readFileList: readFileList
+};
+
+},{"../DOM.Event.Types":95,"../Data.Foreign":147,"../Unsafe.Coerce":282}],97:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var DOM_Event_Types = require("../DOM.Event.Types");
+var DOM_Util_FFI = require("../DOM.Util.FFI");
+var Data_Eq = require("../Data.Eq");
+var Data_Foreign = require("../Data.Foreign");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var ElementId = function (x) {
+    return x;
+};
+var textToNode = Unsafe_Coerce.unsafeCoerce;
+var readNode = DOM_Util_FFI.unsafeReadProtoTagged("Node");
+var readElement = DOM_Util_FFI.unsafeReadProtoTagged("Element");
+var readDocument = DOM_Util_FFI.unsafeReadProtoTagged("Document");
+var processingInstructionToNode = Unsafe_Coerce.unsafeCoerce;
+var oOrdElementId = Data_Ord.ordString;
+var newtypeElementId = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, ElementId);
+var eqElementId = Data_Eq.eqString;
+var elementToParentNode = Unsafe_Coerce.unsafeCoerce;
+var elementToNonDocumentTypeChildNode = Unsafe_Coerce.unsafeCoerce;
+var elementToNode = Unsafe_Coerce.unsafeCoerce;
+var elementToEventTarget = Unsafe_Coerce.unsafeCoerce;
+var documentTypeToNode = Unsafe_Coerce.unsafeCoerce;
+var documentToParentNode = Unsafe_Coerce.unsafeCoerce;
+var documentToNonElementParentNode = Unsafe_Coerce.unsafeCoerce;
+var documentToNode = Unsafe_Coerce.unsafeCoerce;
+var documentToEventTarget = Unsafe_Coerce.unsafeCoerce;
+var documentFragmentToParentNode = Unsafe_Coerce.unsafeCoerce;
+var documentFragmentToNonElementParentNode = Unsafe_Coerce.unsafeCoerce;
+var documentFragmentToNode = Unsafe_Coerce.unsafeCoerce;
+var commentToNode = Unsafe_Coerce.unsafeCoerce;
+var characterDataToNonDocumentTypeChildNode = Unsafe_Coerce.unsafeCoerce;
+module.exports = {
+    ElementId: ElementId, 
+    characterDataToNonDocumentTypeChildNode: characterDataToNonDocumentTypeChildNode, 
+    commentToNode: commentToNode, 
+    documentFragmentToNode: documentFragmentToNode, 
+    documentFragmentToNonElementParentNode: documentFragmentToNonElementParentNode, 
+    documentFragmentToParentNode: documentFragmentToParentNode, 
+    documentToEventTarget: documentToEventTarget, 
+    documentToNode: documentToNode, 
+    documentToNonElementParentNode: documentToNonElementParentNode, 
+    documentToParentNode: documentToParentNode, 
+    documentTypeToNode: documentTypeToNode, 
+    elementToEventTarget: elementToEventTarget, 
+    elementToNode: elementToNode, 
+    elementToNonDocumentTypeChildNode: elementToNonDocumentTypeChildNode, 
+    elementToParentNode: elementToParentNode, 
+    processingInstructionToNode: processingInstructionToNode, 
+    readDocument: readDocument, 
+    readElement: readElement, 
+    readNode: readNode, 
+    textToNode: textToNode, 
+    newtypeElementId: newtypeElementId, 
+    eqElementId: eqElementId, 
+    oOrdElementId: oOrdElementId
+};
+
+},{"../DOM.Event.Types":95,"../DOM.Util.FFI":99,"../Data.Eq":140,"../Data.Foreign":147,"../Data.Newtype":215,"../Data.Ord":222,"../Prelude":278,"../Unsafe.Coerce":282}],98:[function(require,module,exports){
+"use strict";
+
+exports._unsafeReadProtoTagged = function (name) {
+  return function (failure) {
+    return function (success) {
+      return function (value) {
+        var obj = value;
+        while (obj != null) {
+          var proto = Object.getPrototypeOf(obj);
+          var ctor = proto.constructor.name;
+          if (ctor === name) {
+            return success(value);
+          } else if (ctor === "Object") {
+            return failure(Object.getPrototypeOf(value).constructor.name);
+          }
+          obj = proto;
+        }
+        return failure(Object.getPrototypeOf(value).constructor.name);
+      };
+    };
+  };
+};
+
+},{}],99:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Monad_Except = require("../Control.Monad.Except");
+var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Foreign = require("../Data.Foreign");
+var Data_Identity = require("../Data.Identity");
+var Data_List_Types = require("../Data.List.Types");
+var Prelude = require("../Prelude");
+var unsafeReadProtoTagged = function (name) {
+    return $foreign._unsafeReadProtoTagged(name)(function ($0) {
+        return Control_Monad_Except_Trans.except(Data_Identity.applicativeIdentity)(Data_Either.Left.create(Control_Applicative.pure(Data_List_Types.applicativeNonEmptyList)(Data_Foreign.TypeMismatch.create(name)($0))));
+    })(function ($1) {
+        return Control_Monad_Except_Trans.except(Data_Identity.applicativeIdentity)(Data_Either.Right.create($1));
+    });
+};
+module.exports = {
+    unsafeReadProtoTagged: unsafeReadProtoTagged
+};
+
+},{"../Control.Applicative":40,"../Control.Monad.Except":74,"../Control.Monad.Except.Trans":73,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Foreign":147,"../Data.Identity":163,"../Data.List.Types":199,"../Prelude":278,"./foreign":98}],100:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+module.exports = {};
+
+},{}],101:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+module.exports = {};
+
+},{"../Control.Monad.Eff":71}],102:[function(require,module,exports){
+"use strict";
+
+function id(x) {
+  return x;
+}
+
+exports.fromNull = function () {
+  return null;
+};
+
+exports.fromBoolean = id;
+exports.fromNumber = id;
+exports.fromString = id;
+exports.fromArray = id;
+exports.fromObject = id;
+
+exports.jsonNull = null;
+
+exports.stringify = function (j) {
+  return JSON.stringify(j);
+};
+
+var objToString = Object.prototype.toString;
+var objKeys = Object.keys;
+
+function isArray(a) {
+  return objToString.call(a) === "[object Array]";
+}
+
+exports._foldJson = function (isNull, isBool, isNum, isStr, isArr, isObj, j) {
+  if (j == null) return isNull(null);
+  else if (typeof j === "boolean") return isBool(j);
+  else if (typeof j === "number") return isNum(j);
+  else if (typeof j === "string") return isStr(j);
+  else if (objToString.call(j) === "[object Array]")
+    return isArr(j);
+  else return isObj(j);
+};
+
+exports._compare = function _compare (EQ, GT, LT, a, b) {
+  if (a == null) {
+    if (b == null) return EQ;
+    else return LT;
+  } else if (typeof a === "boolean") {
+    if (typeof b === "boolean") {
+      // boolean / boolean
+      if (a === b) return EQ;
+      else if (a === false) return LT;
+      else return GT;
+    } else if (b == null) return GT;
+    else return LT;
+  } else if (typeof a === "number") {
+    if (typeof b === "number") {
+      if (a === b) return EQ;
+      else if (a < b) return LT;
+      else return GT;
+    } else if (b == null) return GT;
+    else if (typeof b === "boolean") return GT;
+    else return LT;
+  } else if (typeof a === "string") {
+    if (typeof b === "string") {
+      if (a === b) return EQ;
+      else if (a < b) return LT;
+      else return GT;
+    } else if (b == null) return GT;
+    else if (typeof b === "boolean") return GT;
+    else if (typeof b === "number") return GT;
+    else return LT;
+  } else if (isArray(a)) {
+    if (isArray(b)) {
+      for (var i = 0; i < Math.min(a.length, b.length); i++) {
+        var ca = _compare(EQ, GT, LT, a[i], b[i]);
+        if (ca !== EQ) return ca;
+      }
+      if (a.length === b.length) return EQ;
+      else if (a.length < b.length) return LT;
+      else return GT;
+    } else if (b == null) return GT;
+    else if (typeof b === "boolean") return GT;
+    else if (typeof b === "number") return GT;
+    else if (typeof b === "string") return GT;
+    else return LT;
+  } else {
+    if (b == null) return GT;
+    else if (typeof b === "boolean") return GT;
+    else if (typeof b === "number") return GT;
+    else if (typeof b === "string") return GT;
+    else if (isArray(b)) return GT;
+    else {
+      var akeys = objKeys(a);
+      var bkeys = objKeys(b);
+      if (akeys.length < bkeys.length) return LT;
+      else if (akeys.length > bkeys.length) return GT;
+      var keys = akeys.concat(bkeys).sort();
+      for (var j = 0; j < keys.length; j++) {
+        var k = keys[j];
+        if (a[k] === undefined) return LT;
+        else if (b[k] === undefined) return GT;
+        var ck = _compare(EQ, GT, LT, a[k], b[k]);
+        if (ck !== EQ) return ck;
+      }
+      return EQ;
+    }
+  }
+};
+
+},{}],103:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Show = require("../Data.Show");
+var Data_StrMap = require("../Data.StrMap");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var verbJsonType = function (def) {
+    return function (f) {
+        return function (fold) {
+            return fold(def)(f);
+        };
+    };
+};
+var toJsonType = verbJsonType(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
+var showJson = new Data_Show.Show($foreign.stringify);
+var showJNull = new Data_Show.Show(function (v) {
+    return "null";
+});
+var jsonZero = $foreign.fromNumber(0.0);
+var jsonTrue = $foreign.fromBoolean(true);
+var jsonSingletonObject = function (key) {
+    return function (val) {
+        return $foreign.fromObject(Data_StrMap.singleton(key)(val));
+    };
+};
+var jsonSingletonArray = function (j) {
+    return $foreign.fromArray([ j ]);
+};
+var jsonFalse = $foreign.fromBoolean(false);
+var jsonEmptyString = $foreign.fromString("");
+var jsonEmptyObject = $foreign.fromObject(Data_StrMap.empty);
+var jsonEmptyArray = $foreign.fromArray([  ]);
+var jNull = Unsafe_Coerce.unsafeCoerce($foreign.jsonNull);
+var isJsonType = verbJsonType(false)(Data_Function["const"](true));
+var foldJsonString = function (d) {
+    return function (f) {
+        return function (j) {
+            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), f, Data_Function["const"](d), Data_Function["const"](d), j);
+        };
+    };
+};
+var isString = isJsonType(foldJsonString);
+var toString = toJsonType(foldJsonString);
+var foldJsonObject = function (d) {
+    return function (f) {
+        return function (j) {
+            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), f, j);
+        };
+    };
+};
+var isObject = isJsonType(foldJsonObject);
+var toObject = toJsonType(foldJsonObject);
+var foldJsonNumber = function (d) {
+    return function (f) {
+        return function (j) {
+            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), f, Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), j);
+        };
+    };
+};
+var isNumber = isJsonType(foldJsonNumber);
+var toNumber = toJsonType(foldJsonNumber);
+var foldJsonNull = function (d) {
+    return function (f) {
+        return function (j) {
+            return $foreign._foldJson(f, Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), j);
+        };
+    };
+};
+var isNull = isJsonType(foldJsonNull);
+var toNull = toJsonType(foldJsonNull);
+var foldJsonBoolean = function (d) {
+    return function (f) {
+        return function (j) {
+            return $foreign._foldJson(Data_Function["const"](d), f, Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), j);
+        };
+    };
+};
+var isBoolean = isJsonType(foldJsonBoolean);
+var toBoolean = toJsonType(foldJsonBoolean);
+var foldJsonArray = function (d) {
+    return function (f) {
+        return function (j) {
+            return $foreign._foldJson(Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), f, Data_Function["const"](d), j);
+        };
+    };
+};
+var isArray = isJsonType(foldJsonArray);
+var toArray = toJsonType(foldJsonArray);
+var foldJson = function (a) {
+    return function (b) {
+        return function (c) {
+            return function (d) {
+                return function (e) {
+                    return function (f) {
+                        return function (json) {
+                            return $foreign._foldJson(a, b, c, d, e, f, json);
+                        };
+                    };
+                };
+            };
+        };
+    };
+};
+var ordJson = new Data_Ord.Ord(function () {
+    return eqJson;
+}, function (a) {
+    return function (b) {
+        return $foreign._compare(Data_Ordering.EQ.value, Data_Ordering.GT.value, Data_Ordering.LT.value, a, b);
+    };
+});
+var eqJson = new Data_Eq.Eq(function (j1) {
+    return function (j2) {
+        return Data_Eq.eq(Data_Ordering.eqOrdering)(Data_Ord.compare(ordJson)(j1)(j2))(Data_Ordering.EQ.value);
+    };
+});
+var eqJNull = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        return true;
+    };
+});
+var ordJNull = new Data_Ord.Ord(function () {
+    return eqJNull;
+}, function (v) {
+    return function (v1) {
+        return Data_Ordering.EQ.value;
+    };
+});
+module.exports = {
+    foldJson: foldJson, 
+    foldJsonArray: foldJsonArray, 
+    foldJsonBoolean: foldJsonBoolean, 
+    foldJsonNull: foldJsonNull, 
+    foldJsonNumber: foldJsonNumber, 
+    foldJsonObject: foldJsonObject, 
+    foldJsonString: foldJsonString, 
+    isArray: isArray, 
+    isBoolean: isBoolean, 
+    isNull: isNull, 
+    isNumber: isNumber, 
+    isObject: isObject, 
+    isString: isString, 
+    jNull: jNull, 
+    jsonEmptyArray: jsonEmptyArray, 
+    jsonEmptyObject: jsonEmptyObject, 
+    jsonEmptyString: jsonEmptyString, 
+    jsonFalse: jsonFalse, 
+    jsonSingletonArray: jsonSingletonArray, 
+    jsonSingletonObject: jsonSingletonObject, 
+    jsonTrue: jsonTrue, 
+    jsonZero: jsonZero, 
+    toArray: toArray, 
+    toBoolean: toBoolean, 
+    toNull: toNull, 
+    toNumber: toNumber, 
+    toObject: toObject, 
+    toString: toString, 
+    eqJNull: eqJNull, 
+    ordJNull: ordJNull, 
+    showJNull: showJNull, 
+    eqJson: eqJson, 
+    ordJson: ordJson, 
+    showJson: showJson, 
+    fromArray: $foreign.fromArray, 
+    fromBoolean: $foreign.fromBoolean, 
+    fromNull: $foreign.fromNull, 
+    fromNumber: $foreign.fromNumber, 
+    fromObject: $foreign.fromObject, 
+    fromString: $foreign.fromString, 
+    jsonNull: $foreign.jsonNull, 
+    stringify: $foreign.stringify
+};
+
+},{"../Data.Eq":140,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Maybe":204,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Show":241,"../Data.StrMap":245,"../Data.Tuple":255,"../Prelude":278,"../Unsafe.Coerce":282,"./foreign":102}],104:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Either = require("../Data.Either");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Int = require("../Data.Int");
+var Data_List = require("../Data.List");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Map = require("../Data.Map");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_StrMap = require("../Data.StrMap");
+var Data_String = require("../Data.String");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var DecodeJson = function (decodeJson) {
+    this.decodeJson = decodeJson;
+};
+var decodeVoid = new DecodeJson(function (v) {
+    return new Data_Either.Left("Value cannot be Void");
+});
+var decodeJsonString = new DecodeJson(Data_Argonaut_Core.foldJsonString(new Data_Either.Left("Value is not a String"))(Data_Either.Right.create));
+var decodeJsonNumber = new DecodeJson(Data_Argonaut_Core.foldJsonNumber(new Data_Either.Left("Value is not a Number"))(Data_Either.Right.create));
+var decodeJsonNull = new DecodeJson(Data_Argonaut_Core.foldJsonNull(new Data_Either.Left("Value is not a null"))(Data_Function["const"](new Data_Either.Right(Data_Unit.unit))));
+var decodeJsonJson = new DecodeJson(Data_Either.Right.create);
+var decodeJsonBoolean = new DecodeJson(Data_Argonaut_Core.foldJsonBoolean(new Data_Either.Left("Value is not a Boolean"))(Data_Either.Right.create));
+var decodeJson = function (dict) {
+    return dict.decodeJson;
+};
+var decodeJsonChar = new DecodeJson(function (j) {
+    return Control_Bind.bindFlipped(Data_Either.bindEither)(Data_Maybe.maybe(Data_Either.Left.create("Expected character but found: " + Data_Show.show(Data_Argonaut_Core.showJson)(j)))(Data_Either.Right.create))(Data_Functor.map(Data_Either.functorEither)(Data_String.charAt(0))(decodeJson(decodeJsonString)(j)));
+});
+var decodeJsonInt = new DecodeJson(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(function ($32) {
+    return Data_Maybe.maybe(new Data_Either.Left("Value is not an integer"))(Data_Either.Right.create)(Data_Int.fromNumber($32));
+})(decodeJson(decodeJsonNumber)));
+var decodeJsonMaybe = function (dictDecodeJson) {
+    return new DecodeJson(function (j) {
+        if (Data_Argonaut_Core.isNull(j)) {
+            return Control_Applicative.pure(Data_Either.applicativeEither)(Data_Maybe.Nothing.value);
+        };
+        if (Data_Boolean.otherwise) {
+            return Data_Functor.map(Data_Either.functorEither)(Data_Maybe.Just.create)(decodeJson(dictDecodeJson)(j));
+        };
+        throw new Error("Failed pattern match at Data.Argonaut.Decode.Class line 24, column 3 - line 26, column 40: " + [ j.constructor.name ]);
+    });
+};
+var decodeJObject = function ($33) {
+    return Data_Maybe.maybe(new Data_Either.Left("Value is not an Object"))(Data_Either.Right.create)(Data_Argonaut_Core.toObject($33));
+};
+var decodeJsonEither = function (dictDecodeJson) {
+    return function (dictDecodeJson1) {
+        return new DecodeJson(function (json) {
+            return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
+                return "Couldn't decode Either: " + v;
+            })(Control_Bind.bind(Data_Either.bindEither)(decodeJObject(json))(function (obj) {
+                return Control_Bind.bind(Data_Either.bindEither)(Data_Maybe.maybe(new Data_Either.Left("Expected field 'tag'"))(Data_Either.Right.create)(Data_StrMap.lookup("tag")(obj)))(function (v) {
+                    return Control_Bind.bind(Data_Either.bindEither)(Data_Maybe.maybe(new Data_Either.Left("Expected field 'value'"))(Data_Either.Right.create)(Data_StrMap.lookup("value")(obj)))(function (v1) {
+                        var v2 = Data_Argonaut_Core.toString(v);
+                        if (v2 instanceof Data_Maybe.Just && v2.value0 === "Right") {
+                            return Data_Functor.map(Data_Either.functorEither)(Data_Either.Right.create)(decodeJson(dictDecodeJson1)(v1));
+                        };
+                        if (v2 instanceof Data_Maybe.Just && v2.value0 === "Left") {
+                            return Data_Functor.map(Data_Either.functorEither)(Data_Either.Left.create)(decodeJson(dictDecodeJson)(v1));
+                        };
+                        return new Data_Either.Left("'tag' field was not \"Left\" or \"Right\"");
+                    });
+                });
+            }));
+        });
+    };
+};
+var decodeStrMap = function (dictDecodeJson) {
+    return new DecodeJson(function ($34) {
+        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
+            return "Couldn't decode StrMap: " + v;
+        })(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(Data_Traversable.traverse(Data_StrMap.traversableStrMap)(Data_Either.applicativeEither)(decodeJson(dictDecodeJson)))(decodeJObject)($34));
+    });
+};
+var decodeJArray = function ($35) {
+    return Data_Maybe.maybe(new Data_Either.Left("Value is not an Array"))(Data_Either.Right.create)(Data_Argonaut_Core.toArray($35));
+};
+var decodeList = function (dictDecodeJson) {
+    return new DecodeJson(function ($36) {
+        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
+            return "Couldn't decode List: " + v;
+        })(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(Data_Traversable.traverse(Data_List_Types.traversableList)(Data_Either.applicativeEither)(decodeJson(dictDecodeJson)))(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Either.functorEither)(Data_List.fromFoldable(Data_Foldable.foldableArray)))(decodeJArray))($36));
+    });
+};
+var decodeJsonTuple = function (dictDecodeJson) {
+    return function (dictDecodeJson1) {
+        return new DecodeJson(function (j) {
+            var f = function (v) {
+                if (v instanceof Data_List_Types.Cons && (v.value1 instanceof Data_List_Types.Cons && v.value1.value1 instanceof Data_List_Types.Nil)) {
+                    return Control_Apply.apply(Data_Either.applyEither)(Data_Functor.map(Data_Either.functorEither)(Data_Tuple.Tuple.create)(decodeJson(dictDecodeJson)(v.value0)))(decodeJson(dictDecodeJson1)(v.value1.value0));
+                };
+                return new Data_Either.Left("Couldn't decode Tuple");
+            };
+            return Control_Bind.bind(Data_Either.bindEither)(decodeJson(decodeList(decodeJsonJson))(j))(f);
+        });
+    };
+};
+var decodeMap = function (dictOrd) {
+    return function (dictDecodeJson) {
+        return function (dictDecodeJson1) {
+            return new DecodeJson(function ($37) {
+                return Data_Functor.map(Data_Either.functorEither)(Data_Map.fromFoldable(dictOrd)(Data_List_Types.foldableList))(decodeJson(decodeList(decodeJsonTuple(dictDecodeJson)(dictDecodeJson1)))($37));
+            });
+        };
+    };
+};
+var decodeArray = function (dictDecodeJson) {
+    return new DecodeJson(function ($38) {
+        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(function (v) {
+            return "Couldn't decode Array: " + v;
+        })(Control_Bind.composeKleisliFlipped(Data_Either.bindEither)(Data_Traversable.traverse(Data_Traversable.traversableArray)(Data_Either.applicativeEither)(decodeJson(dictDecodeJson)))(decodeJArray)($38));
+    });
+};
+module.exports = {
+    DecodeJson: DecodeJson, 
+    decodeJson: decodeJson, 
+    decodeJsonMaybe: decodeJsonMaybe, 
+    decodeJsonTuple: decodeJsonTuple, 
+    decodeJsonEither: decodeJsonEither, 
+    decodeJsonNull: decodeJsonNull, 
+    decodeJsonBoolean: decodeJsonBoolean, 
+    decodeJsonNumber: decodeJsonNumber, 
+    decodeJsonInt: decodeJsonInt, 
+    decodeJsonString: decodeJsonString, 
+    decodeJsonJson: decodeJsonJson, 
+    decodeJsonChar: decodeJsonChar, 
+    decodeStrMap: decodeStrMap, 
+    decodeArray: decodeArray, 
+    decodeList: decodeList, 
+    decodeMap: decodeMap, 
+    decodeVoid: decodeVoid
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Semigroupoid":93,"../Data.Argonaut.Core":103,"../Data.Bifunctor":128,"../Data.Boolean":130,"../Data.Either":138,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.Int":167,"../Data.List":200,"../Data.List.Types":199,"../Data.Map":201,"../Data.Maybe":204,"../Data.Semigroup":237,"../Data.Show":241,"../Data.StrMap":245,"../Data.String":249,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unit":259,"../Prelude":278}],105:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_StrMap = require("../Data.StrMap");
+var Prelude = require("../Prelude");
+var getFieldOptional = function (dictDecodeJson) {
+    return function (o) {
+        return function (s) {
+            var decode = function (json) {
+                return Data_Functor.map(Data_Either.functorEither)(Data_Maybe.Just.create)(Data_Argonaut_Decode_Class.decodeJson(dictDecodeJson)(json));
+            };
+            return Data_Maybe.maybe(Control_Applicative.pure(Data_Either.applicativeEither)(Data_Maybe.Nothing.value))(decode)(Data_StrMap.lookup(s)(o));
+        };
+    };
+};
+var getField = function (dictDecodeJson) {
+    return function (o) {
+        return function (s) {
+            return Data_Maybe.maybe(Data_Either.Left.create("Expected field " + Data_Show.show(Data_Show.showString)(s)))(Data_Argonaut_Decode_Class.decodeJson(dictDecodeJson))(Data_StrMap.lookup(s)(o));
+        };
+    };
+};
+var defaultField = function (parser) {
+    return function ($$default) {
+        return Data_Functor.map(Data_Either.functorEither)(Data_Maybe.fromMaybe($$default))(parser);
+    };
+};
+module.exports = {
+    defaultField: defaultField, 
+    getField: getField, 
+    getFieldOptional: getFieldOptional
+};
+
+},{"../Control.Applicative":40,"../Data.Argonaut.Core":103,"../Data.Argonaut.Decode.Class":104,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Maybe":204,"../Data.Semigroup":237,"../Data.Show":241,"../Data.StrMap":245,"../Prelude":278}],106:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
+var Data_Argonaut_Decode_Combinators = require("../Data.Argonaut.Decode.Combinators");
+module.exports = {};
+
+},{"../Data.Argonaut.Decode.Class":104,"../Data.Argonaut.Decode.Combinators":105}],107:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Int = require("../Data.Int");
+var Data_List = require("../Data.List");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Map = require("../Data.Map");
+var Data_Maybe = require("../Data.Maybe");
+var Data_StrMap = require("../Data.StrMap");
+var Data_String = require("../Data.String");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Data_Void = require("../Data.Void");
+var Prelude = require("../Prelude");
+var EncodeJson = function (encodeJson) {
+    this.encodeJson = encodeJson;
+};
+var encodeVoid = new EncodeJson(Data_Void.absurd);
+var encodeJsonUnit = new EncodeJson(Data_Function["const"](Data_Argonaut_Core.jsonNull));
+var encodeJsonJson = new EncodeJson(Control_Category.id(Control_Category.categoryFn));
+var encodeJsonJString = new EncodeJson(Data_Argonaut_Core.fromString);
+var encodeJsonJNumber = new EncodeJson(Data_Argonaut_Core.fromNumber);
+var encodeJsonJBoolean = new EncodeJson(Data_Argonaut_Core.fromBoolean);
+var encodeJsonInt = new EncodeJson(function ($19) {
+    return Data_Argonaut_Core.fromNumber(Data_Int.toNumber($19));
+});
+var encodeJson = function (dict) {
+    return dict.encodeJson;
+};
+var encodeJsonArray = function (dictEncodeJson) {
+    return new EncodeJson(function (json) {
+        return Data_Argonaut_Core.fromArray(Data_Functor.map(Data_Functor.functorArray)(encodeJson(dictEncodeJson))(json));
+    });
+};
+var encodeJsonChar = new EncodeJson(function ($20) {
+    return encodeJson(encodeJsonJString)(Data_String.singleton($20));
+});
+var encodeJsonEither = function (dictEncodeJson) {
+    return function (dictEncodeJson1) {
+        return new EncodeJson((function () {
+            var obj = function (dictEncodeJson2) {
+                return function (tag) {
+                    return function (x) {
+                        return Data_Argonaut_Core.fromObject(Data_StrMap.fromFoldable(Data_List_Types.foldableList)(new Data_List_Types.Cons(new Data_Tuple.Tuple("tag", Data_Argonaut_Core.fromString(tag)), new Data_List_Types.Cons(new Data_Tuple.Tuple("value", encodeJson(dictEncodeJson2)(x)), Data_List_Types.Nil.value))));
+                    };
+                };
+            };
+            return Data_Either.either(obj(dictEncodeJson)("Left"))(obj(dictEncodeJson1)("Right"));
+        })());
+    };
+};
+var encodeJsonList = function (dictEncodeJson) {
+    return new EncodeJson(function ($21) {
+        return Data_Argonaut_Core.fromArray(Data_Functor.map(Data_Functor.functorArray)(encodeJson(dictEncodeJson))(Data_List.toUnfoldable(Data_Unfoldable.unfoldableArray)($21)));
+    });
+};
+var encodeJsonMaybe = function (dictEncodeJson) {
+    return new EncodeJson(function (v) {
+        if (v instanceof Data_Maybe.Nothing) {
+            return Data_Argonaut_Core.jsonNull;
+        };
+        if (v instanceof Data_Maybe.Just) {
+            return encodeJson(dictEncodeJson)(v.value0);
+        };
+        throw new Error("Failed pattern match at Data.Argonaut.Encode.Class line 19, column 3 - line 19, column 33: " + [ v.constructor.name ]);
+    });
+};
+var encodeJsonTuple = function (dictEncodeJson) {
+    return function (dictEncodeJson1) {
+        return new EncodeJson(function (v) {
+            return encodeJson(encodeJsonArray(encodeJsonJson))([ encodeJson(dictEncodeJson)(v.value0), encodeJson(dictEncodeJson1)(v.value1) ]);
+        });
+    };
+};
+var encodeMap = function (dictOrd) {
+    return function (dictEncodeJson) {
+        return function (dictEncodeJson1) {
+            return new EncodeJson(function ($22) {
+                return encodeJson(encodeJsonList(encodeJsonTuple(dictEncodeJson)(dictEncodeJson1)))(Data_Map.toUnfoldable(Data_List_Types.unfoldableList)($22));
+            });
+        };
+    };
+};
+var encodeStrMap = function (dictEncodeJson) {
+    return new EncodeJson(function ($23) {
+        return Data_Argonaut_Core.fromObject(Data_Functor.map(Data_StrMap.functorStrMap)(encodeJson(dictEncodeJson))($23));
+    });
+};
+module.exports = {
+    EncodeJson: EncodeJson, 
+    encodeJson: encodeJson, 
+    encodeJsonMaybe: encodeJsonMaybe, 
+    encodeJsonTuple: encodeJsonTuple, 
+    encodeJsonEither: encodeJsonEither, 
+    encodeJsonUnit: encodeJsonUnit, 
+    encodeJsonJBoolean: encodeJsonJBoolean, 
+    encodeJsonJNumber: encodeJsonJNumber, 
+    encodeJsonInt: encodeJsonInt, 
+    encodeJsonJString: encodeJsonJString, 
+    encodeJsonJson: encodeJsonJson, 
+    encodeJsonChar: encodeJsonChar, 
+    encodeJsonArray: encodeJsonArray, 
+    encodeJsonList: encodeJsonList, 
+    encodeStrMap: encodeStrMap, 
+    encodeMap: encodeMap, 
+    encodeVoid: encodeVoid
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Argonaut.Core":103,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Int":167,"../Data.List":200,"../Data.List.Types":199,"../Data.Map":201,"../Data.Maybe":204,"../Data.StrMap":245,"../Data.String":249,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Data.Void":260,"../Prelude":278}],108:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Argonaut_Encode_Class = require("../Data.Argonaut.Encode.Class");
+var Data_StrMap = require("../Data.StrMap");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var extend = function (dictEncodeJson) {
+    return function (v) {
+        return function ($6) {
+            return Data_Argonaut_Core.foldJsonObject(Data_Argonaut_Core.jsonSingletonObject(v.value0)(v.value1))(function ($7) {
+                return Data_Argonaut_Core.fromObject(Data_StrMap.insert(v.value0)(v.value1)($7));
+            })(Data_Argonaut_Encode_Class.encodeJson(dictEncodeJson)($6));
+        };
+    };
+};
+var assoc = function (dictEncodeJson) {
+    return function (k) {
+        return function ($8) {
+            return Data_Tuple.Tuple.create(k)(Data_Argonaut_Encode_Class.encodeJson(dictEncodeJson)($8));
+        };
+    };
+};
+module.exports = {
+    assoc: assoc, 
+    extend: extend
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Argonaut.Core":103,"../Data.Argonaut.Encode.Class":107,"../Data.StrMap":245,"../Data.Tuple":255,"../Prelude":278}],109:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Argonaut_Encode_Class = require("../Data.Argonaut.Encode.Class");
+var Data_Argonaut_Encode_Combinators = require("../Data.Argonaut.Encode.Combinators");
+module.exports = {};
+
+},{"../Data.Argonaut.Encode.Class":107,"../Data.Argonaut.Encode.Combinators":108}],110:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
+var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
+var Data_Argonaut_Encode = require("../Data.Argonaut.Encode");
+var Data_Argonaut_Encode_Class = require("../Data.Argonaut.Encode.Class");
+var Data_Array = require("../Data.Array");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Int = require("../Data.Int");
+var Data_List = require("../Data.List");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_StrMap = require("../Data.StrMap");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Prelude = require("../Prelude");
+var JsonPrim = function (x) {
+    return x;
+};
+var JCursorTop = (function () {
+    function JCursorTop() {
+
+    };
+    JCursorTop.value = new JCursorTop();
+    return JCursorTop;
+})();
+var JField = (function () {
+    function JField(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    JField.create = function (value0) {
+        return function (value1) {
+            return new JField(value0, value1);
+        };
+    };
+    return JField;
+})();
+var JIndex = (function () {
+    function JIndex(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    JIndex.create = function (value0) {
+        return function (value1) {
+            return new JIndex(value0, value1);
+        };
+    };
+    return JIndex;
+})();
+var showJCursor = new Data_Show.Show(function (v) {
+    if (v instanceof JCursorTop) {
+        return "JCursorTop";
+    };
+    if (v instanceof JField) {
+        return "(JField " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(showJCursor)(v.value1) + ")")));
+    };
+    if (v instanceof JIndex) {
+        return "(JIndex " + (Data_Show.show(Data_Show.showInt)(v.value0) + (" " + (Data_Show.show(showJCursor)(v.value1) + ")")));
+    };
+    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 28, column 3 - line 29, column 3: " + [ v.constructor.name ]);
+});
+var semigroupJCursor = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        if (v1 instanceof JCursorTop) {
+            return v;
+        };
+        if (v instanceof JCursorTop) {
+            return v1;
+        };
+        if (v instanceof JField) {
+            return new JField(v.value0, Data_Semigroup.append(semigroupJCursor)(v.value1)(v1));
+        };
+        if (v instanceof JIndex) {
+            return new JIndex(v.value0, Data_Semigroup.append(semigroupJCursor)(v.value1)(v1));
+        };
+        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 38, column 3 - line 38, column 26: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var runJsonPrim = function (v) {
+    return v;
+};
+var showJsonPrim = new Data_Show.Show(function (p) {
+    return runJsonPrim(p)(Data_Show.show(Data_Argonaut_Core.showJNull))(Data_Show.show(Data_Show.showBoolean))(Data_Show.show(Data_Show.showNumber))(Data_Show.show(Data_Show.showString));
+});
+var print = function (v) {
+    if (v instanceof JCursorTop) {
+        return "";
+    };
+    if (v instanceof JField) {
+        return "." + (v.value0 + Data_Show.show(showJCursor)(v.value1));
+    };
+    if (v instanceof JIndex) {
+        return "[" + (Data_Show.show(Data_Show.showInt)(v.value0) + ("]" + Data_Show.show(showJCursor)(v.value1)));
+    };
+    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 33, column 1 - line 34, column 1: " + [ v.constructor.name ]);
+};
+var primToJson = function (p) {
+    return runJsonPrim(p)(Data_Argonaut_Core.fromNull)(Data_Argonaut_Core.fromBoolean)(Data_Argonaut_Core.fromNumber)(Data_Argonaut_Core.fromString);
+};
+var primStr = function (v) {
+    return function (v1) {
+        return function (v2) {
+            return function (v3) {
+                return function (f) {
+                    return f(v);
+                };
+            };
+        };
+    };
+};
+var primNum = function (v) {
+    return function (v1) {
+        return function (v2) {
+            return function (f) {
+                return function (v3) {
+                    return f(v);
+                };
+            };
+        };
+    };
+};
+var primNull = function (f) {
+    return function (v) {
+        return function (v1) {
+            return function (v2) {
+                return f(Data_Argonaut_Core.jNull);
+            };
+        };
+    };
+};
+var primBool = function (v) {
+    return function (v1) {
+        return function (f) {
+            return function (v2) {
+                return function (v3) {
+                    return f(v);
+                };
+            };
+        };
+    };
+};
+var toPrims = (function () {
+    var objFn = function (obj) {
+        var f = function (v) {
+            return Data_Functor.map(Data_List_Types.functorList)(function (t) {
+                return new Data_Tuple.Tuple(new JField(v.value0, Data_Tuple.fst(t)), Data_Tuple.snd(t));
+            })(toPrims(v.value1));
+        };
+        return Control_Bind.bind(Data_List_Types.bindList)(Data_StrMap.toUnfoldable(Data_List_Types.unfoldableList)(obj))(f);
+    };
+    var mkTop = function (p) {
+        return Data_List.singleton(new Data_Tuple.Tuple(JCursorTop.value, p));
+    };
+    var nullFn = function (v) {
+        return mkTop(primNull);
+    };
+    var numFn = function (n) {
+        return mkTop(primNum(n));
+    };
+    var strFn = function (s) {
+        return mkTop(primStr(s));
+    };
+    var boolFn = function (b) {
+        return mkTop(primBool(b));
+    };
+    var arrFn$prime = function (v) {
+        return Data_List.fromFoldable(Data_List_Types.foldableList)(Data_Functor.map(Data_List_Types.functorList)(function (t) {
+            return new Data_Tuple.Tuple(new JIndex(v.value0, Data_Tuple.fst(t)), Data_Tuple.snd(t));
+        })(toPrims(v.value1)));
+    };
+    var arrFn = function (arr) {
+        var zipped = Data_List.zipWith(Data_Tuple.Tuple.create)(Data_List.range(0)(Data_Array.length(arr) - 1 | 0))(Data_List.fromFoldable(Data_Foldable.foldableArray)(arr));
+        return Control_Bind.bind(Data_List_Types.bindList)(zipped)(arrFn$prime);
+    };
+    return Data_Argonaut_Core.foldJson(nullFn)(boolFn)(numFn)(strFn)(arrFn)(objFn);
+})();
+var monoidJCursor = new Data_Monoid.Monoid(function () {
+    return semigroupJCursor;
+}, JCursorTop.value);
+var inferEmpty = function (v) {
+    if (v instanceof JCursorTop) {
+        return Data_Argonaut_Core.jsonNull;
+    };
+    if (v instanceof JField) {
+        return Data_Argonaut_Core.jsonEmptyObject;
+    };
+    if (v instanceof JIndex) {
+        return Data_Argonaut_Core.jsonEmptyArray;
+    };
+    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 98, column 1 - line 98, column 37: " + [ v.constructor.name ]);
+};
+var fail = function (dictShow) {
+    return function (x) {
+        return Data_Either.Left.create("Expected String or Number but found: " + Data_Show.show(dictShow)(x));
+    };
+};
+var eqJCursor = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        if (x instanceof JCursorTop && y instanceof JCursorTop) {
+            return true;
+        };
+        if (x instanceof JField && y instanceof JField) {
+            return x.value0 === y.value0 && Data_Eq.eq(eqJCursor)(x.value1)(y.value1);
+        };
+        if (x instanceof JIndex && y instanceof JIndex) {
+            return x.value0 === y.value0 && Data_Eq.eq(eqJCursor)(x.value1)(y.value1);
+        };
+        return false;
+    };
+});
+var ordJCursor = new Data_Ord.Ord(function () {
+    return eqJCursor;
+}, function (x) {
+    return function (y) {
+        if (x instanceof JCursorTop && y instanceof JCursorTop) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof JCursorTop) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof JCursorTop) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof JField && y instanceof JField) {
+            var v = Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
+            if (v instanceof Data_Ordering.LT) {
+                return Data_Ordering.LT.value;
+            };
+            if (v instanceof Data_Ordering.GT) {
+                return Data_Ordering.GT.value;
+            };
+            return Data_Ord.compare(ordJCursor)(x.value1)(y.value1);
+        };
+        if (x instanceof JField) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof JField) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof JIndex && y instanceof JIndex) {
+            var v = Data_Ord.compare(Data_Ord.ordInt)(x.value0)(y.value0);
+            if (v instanceof Data_Ordering.LT) {
+                return Data_Ordering.LT.value;
+            };
+            if (v instanceof Data_Ordering.GT) {
+                return Data_Ordering.GT.value;
+            };
+            return Data_Ord.compare(ordJCursor)(x.value1)(y.value1);
+        };
+        throw new Error("Failed pattern match: " + [ x.constructor.name, y.constructor.name ]);
+    };
+});
+var encodeJsonJCursor = new Data_Argonaut_Encode_Class.EncodeJson((function () {
+    var loop = function (v) {
+        if (v instanceof JCursorTop) {
+            return [  ];
+        };
+        if (v instanceof JField) {
+            return Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Data_Argonaut_Encode_Class.encodeJson(Data_Argonaut_Encode_Class.encodeJsonJString)(v.value0) ])(loop(v.value1));
+        };
+        if (v instanceof JIndex) {
+            return Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Data_Argonaut_Encode_Class.encodeJson(Data_Argonaut_Encode_Class.encodeJsonInt)(v.value0) ])(loop(v.value1));
+        };
+        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 47, column 16 - line 50, column 49: " + [ v.constructor.name ]);
+    };
+    return function ($151) {
+        return Data_Argonaut_Encode_Class.encodeJson(Data_Argonaut_Encode_Class.encodeJsonArray(Data_Argonaut_Encode_Class.encodeJsonJson))(loop($151));
+    };
+})());
+var downIndex = function (i) {
+    var downIndex$prime = function (v) {
+        if (v instanceof JCursorTop) {
+            return new JIndex(i, JCursorTop.value);
+        };
+        if (v instanceof JField) {
+            return new JField(v.value0, downIndex$prime(v.value1));
+        };
+        if (v instanceof JIndex) {
+            return new JIndex(v.value0, downIndex$prime(v.value1));
+        };
+        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 87, column 15 - line 90, column 54: " + [ v.constructor.name ]);
+    };
+    return downIndex$prime;
+};
+var downField = function (i) {
+    var downField$prime = function (v) {
+        if (v instanceof JCursorTop) {
+            return new JField(i, JCursorTop.value);
+        };
+        if (v instanceof JField) {
+            return new JField(v.value0, downField$prime(v.value1));
+        };
+        if (v instanceof JIndex) {
+            return new JIndex(v.value0, downField$prime(v.value1));
+        };
+        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 81, column 15 - line 84, column 54: " + [ v.constructor.name ]);
+    };
+    return downField$prime;
+};
+var insideOut = function (v) {
+    if (v instanceof JCursorTop) {
+        return JCursorTop.value;
+    };
+    if (v instanceof JField) {
+        return downField(v.value0)(insideOut(v.value1));
+    };
+    if (v instanceof JIndex) {
+        return downIndex(v.value0)(insideOut(v.value1));
+    };
+    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 76, column 1 - line 76, column 34: " + [ v.constructor.name ]);
+};
+var decodeJsonJCursor = new Data_Argonaut_Decode_Class.DecodeJson(function (j) {
+    var goNum = function (c) {
+        return function ($152) {
+            return Data_Maybe.maybe(new Data_Either.Left("Not an Int"))(function ($153) {
+                return Data_Either.Right.create(Data_Function.flip(JIndex.create)(c)($153));
+            })(Data_Int.fromNumber($152));
+        };
+    };
+    var loop = function (arr) {
+        return Data_Maybe.maybe(new Data_Either.Right(JCursorTop.value))(goLoop)(Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.Tuple.create)(Data_Array.head(arr)))(Data_Array.tail(arr)));
+    };
+    var goLoop = function (v) {
+        return Control_Bind.bind(Data_Either.bindEither)(loop(v.value1))(function (v1) {
+            return Data_Argonaut_Core.foldJson(fail(Data_Argonaut_Core.showJNull))(fail(Data_Show.showBoolean))(goNum(v1))(function ($154) {
+                return Data_Either.Right.create(Data_Function.flip(JField.create)(v1)($154));
+            })(fail(Data_Show.showArray(Data_Argonaut_Core.showJson)))(fail(Data_StrMap.showStrMap(Data_Argonaut_Core.showJson)))(v.value0);
+        });
+    };
+    return Control_Bind.bind(Data_Either.bindEither)(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeArray(Data_Argonaut_Decode_Class.decodeJsonJson))(j))(loop);
+});
+var cursorSet = function (v) {
+    return function (v1) {
+        if (v instanceof JCursorTop) {
+            return function ($155) {
+                return Control_Applicative.pure(Data_Maybe.applicativeMaybe)(Data_Function["const"](v1)($155));
+            };
+        };
+        if (v instanceof JField) {
+            var mergeObjs = function (m) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(function ($156) {
+                    return Data_Argonaut_Core.fromObject(Data_Function.flip(Data_StrMap.insert(v.value0))(m)($156));
+                })(cursorSet(v.value1)(v1)(Data_Maybe.fromMaybe(inferEmpty(v.value1))(Data_StrMap.lookup(v.value0)(m))));
+            };
+            var defaultObj = Data_Functor.map(Data_Maybe.functorMaybe)(function ($157) {
+                return Data_Argonaut_Core.fromObject(Data_StrMap.singleton(v.value0)($157));
+            })(cursorSet(v.value1)(v1)(inferEmpty(v.value1)));
+            return Data_Argonaut_Core.foldJsonObject(defaultObj)(mergeObjs);
+        };
+        if (v instanceof JIndex) {
+            var setArr = function (__copy_xs) {
+                return function (__copy_i$prime) {
+                    return function (__copy_v$prime) {
+                        var __tco_xs = __copy_xs;
+                        var __tco_i$prime = __copy_i$prime;
+                        var __tco_done = false;
+                        var __tco_result;
+                        function __tco_loop(xs, i$prime, v$prime) {
+                            var len = Data_Array.length(xs);
+                            var $138 = i$prime < 0;
+                            if ($138) {
+                                __tco_done = true;
+                                return Data_Maybe.Nothing.value;
+                            };
+                            var $139 = i$prime >= len;
+                            if ($139) {
+                                __tco_xs = Data_Semigroup.append(Data_Semigroup.semigroupArray)(xs)(Data_Unfoldable.replicate(Data_Unfoldable.unfoldableArray)((i$prime - len | 0) + 1 | 0)(Data_Argonaut_Core.jsonNull));
+                                __tco_i$prime = i$prime;
+                                __copy_v$prime = v$prime;
+                                return;
+                            };
+                            __tco_done = true;
+                            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Argonaut_Core.fromArray)(Data_Array.updateAt(i$prime)(v$prime)(xs));
+                        };
+                        while (!__tco_done) {
+                            __tco_result = __tco_loop(__tco_xs, __tco_i$prime, __copy_v$prime);
+                        };
+                        return __tco_result;
+                    };
+                };
+            };
+            var mergeArrs = function (a) {
+                return Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(setArr(a)(v.value0))(cursorSet(v.value1)(v1)(Data_Maybe.fromMaybe(inferEmpty(v.value1))(Data_Array.index(a)(v.value0))));
+            };
+            var defaultArr = Data_Functor.map(Data_Maybe.functorMaybe)(Data_Argonaut_Core.fromArray)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Data_Function.flip(Data_Array.updateAt(v.value0))(Data_Unfoldable.replicate(Data_Unfoldable.unfoldableArray)(v.value0 + 1 | 0)(Data_Argonaut_Core.jsonNull)))(cursorSet(v.value1)(v1)(inferEmpty(v.value1))));
+            return Data_Argonaut_Core.foldJsonArray(defaultArr)(mergeArrs);
+        };
+        throw new Error("Failed pattern match at Data.Argonaut.JCursor line 103, column 1 - line 103, column 42: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+};
+var fromPrims = function (lst) {
+    var f = function (j) {
+        return function (v) {
+            return Control_Bind.bind(Data_Maybe.bindMaybe)(j)(cursorSet(v.value0)(primToJson(v.value1)));
+        };
+    };
+    return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(Data_Functor.map(Data_Maybe.functorMaybe)(function ($158) {
+        return inferEmpty(Data_Tuple.fst($158));
+    })(Data_List.head(lst)))(lst);
+};
+var cursorGet = function (v) {
+    if (v instanceof JCursorTop) {
+        return Data_Maybe.Just.create;
+    };
+    if (v instanceof JField) {
+        return Data_Argonaut_Core.foldJsonObject(Data_Maybe.Nothing.value)(Control_Bind.composeKleisliFlipped(Data_Maybe.bindMaybe)(cursorGet(v.value1))(Data_StrMap.lookup(v.value0)));
+    };
+    if (v instanceof JIndex) {
+        return Data_Argonaut_Core.foldJsonArray(Data_Maybe.Nothing.value)(Control_Bind.composeKleisliFlipped(Data_Maybe.bindMaybe)(cursorGet(v.value1))(function (v1) {
+            return Data_Array.index(v1)(v.value0);
+        }));
+    };
+    throw new Error("Failed pattern match at Data.Argonaut.JCursor line 93, column 1 - line 93, column 28: " + [ v.constructor.name ]);
+};
+module.exports = {
+    JCursorTop: JCursorTop, 
+    JField: JField, 
+    JIndex: JIndex, 
+    JsonPrim: JsonPrim, 
+    cursorGet: cursorGet, 
+    cursorSet: cursorSet, 
+    downField: downField, 
+    downIndex: downIndex, 
+    fail: fail, 
+    fromPrims: fromPrims, 
+    inferEmpty: inferEmpty, 
+    insideOut: insideOut, 
+    primBool: primBool, 
+    primNull: primNull, 
+    primNum: primNum, 
+    primStr: primStr, 
+    primToJson: primToJson, 
+    print: print, 
+    runJsonPrim: runJsonPrim, 
+    toPrims: toPrims, 
+    eqJCursor: eqJCursor, 
+    ordJCursor: ordJCursor, 
+    showJCursor: showJCursor, 
+    semigroupJCursor: semigroupJCursor, 
+    monoidJCursor: monoidJCursor, 
+    encodeJsonJCursor: encodeJsonJCursor, 
+    showJsonPrim: showJsonPrim, 
+    decodeJsonJCursor: decodeJsonJCursor
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Semigroupoid":93,"../Data.Argonaut.Core":103,"../Data.Argonaut.Decode":106,"../Data.Argonaut.Decode.Class":104,"../Data.Argonaut.Encode":109,"../Data.Argonaut.Encode.Class":107,"../Data.Array":120,"../Data.Either":138,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Int":167,"../Data.List":200,"../Data.List.Types":199,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.StrMap":245,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Prelude":278}],111:[function(require,module,exports){
+"use strict";
+
+exports._jsonParser = function (fail, succ, s) {
+  try {
+    return succ(JSON.parse(s));
+  }
+  catch (e) {
+    return fail(e.message);
+  }
+};
+
+},{}],112:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Either = require("../Data.Either");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var jsonParser = function (j) {
+    return $foreign._jsonParser(Data_Either.Left.create, Data_Either.Right.create, j);
+};
+module.exports = {
+    jsonParser: jsonParser
+};
+
+},{"../Data.Argonaut.Core":103,"../Data.Either":138,"../Data.Function.Uncurried":150,"./foreign":111}],113:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Lens = require("../Data.Lens");
+var Data_Lens_Prism = require("../Data.Lens.Prism");
+var _String = function (dictChoice) {
+    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromString)(Data_Argonaut_Core.toString)(dictChoice);
+};
+var _Object = function (dictChoice) {
+    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromObject)(Data_Argonaut_Core.toObject)(dictChoice);
+};
+var _Number = function (dictChoice) {
+    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromNumber)(Data_Argonaut_Core.toNumber)(dictChoice);
+};
+var _Null = function (dictChoice) {
+    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromNull)(Data_Argonaut_Core.toNull)(dictChoice);
+};
+var _Boolean = function (dictChoice) {
+    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromBoolean)(Data_Argonaut_Core.toBoolean)(dictChoice);
+};
+var _Array = function (dictChoice) {
+    return Data_Lens_Prism["prism'"](Data_Argonaut_Core.fromArray)(Data_Argonaut_Core.toArray)(dictChoice);
+};
+module.exports = {
+    _Array: _Array, 
+    _Boolean: _Boolean, 
+    _Null: _Null, 
+    _Number: _Number, 
+    _Object: _Object, 
+    _String: _String
+};
+
+},{"../Data.Argonaut.Core":103,"../Data.Lens":195,"../Data.Lens.Prism":191}],114:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Lens = require("../Data.Lens");
+var Data_Lens_Fold = require("../Data.Lens.Fold");
+var Prelude = require("../Prelude");
+var _JsonString = function (dictWander) {
+    return function ($6) {
+        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isString)($6));
+    };
+};
+var _JsonObject = function (dictWander) {
+    return function ($7) {
+        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isObject)($7));
+    };
+};
+var _JsonNumber = function (dictWander) {
+    return function ($8) {
+        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isNumber)($8));
+    };
+};
+var _JsonNull = function (dictWander) {
+    return function ($9) {
+        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isNull)($9));
+    };
+};
+var _JsonBoolean = function (dictWander) {
+    return function ($10) {
+        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isBoolean)($10));
+    };
+};
+var _JsonArray = function (dictWander) {
+    return function ($11) {
+        return Control_Category.id(Control_Category.categoryFn)(Data_Lens_Fold.filtered(dictWander.Choice1())(Data_Argonaut_Core.isArray)($11));
+    };
+};
+module.exports = {
+    _JsonArray: _JsonArray, 
+    _JsonBoolean: _JsonBoolean, 
+    _JsonNull: _JsonNull, 
+    _JsonNumber: _JsonNumber, 
+    _JsonObject: _JsonObject, 
+    _JsonString: _JsonString
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Argonaut.Core":103,"../Data.Lens":195,"../Data.Lens.Fold":171,"../Prelude":278}],115:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
+var Data_Argonaut_Encode = require("../Data.Argonaut.Encode");
+var Data_Argonaut_JCursor = require("../Data.Argonaut.JCursor");
+var Data_Argonaut_Parser = require("../Data.Argonaut.Parser");
+var Data_Argonaut_Prisms = require("../Data.Argonaut.Prisms");
+var Data_Argonaut_Traversals = require("../Data.Argonaut.Traversals");
+module.exports = {};
+
+},{"../Data.Argonaut.Core":103,"../Data.Argonaut.Decode":106,"../Data.Argonaut.Encode":109,"../Data.Argonaut.JCursor":110,"../Data.Argonaut.Parser":112,"../Data.Argonaut.Prisms":113,"../Data.Argonaut.Traversals":114}],116:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_ST = require("../Control.Monad.ST");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Array_ST = require("../Data.Array.ST");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Semiring = require("../Data.Semiring");
+var Prelude = require("../Prelude");
+var Iterator = (function () {
+    function Iterator(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Iterator.create = function (value0) {
+        return function (value1) {
+            return new Iterator(value0, value1);
+        };
+    };
+    return Iterator;
+})();
+var peek = function (v) {
+    return function __do() {
+        var v1 = Control_Monad_ST.readSTRef(v.value1)();
+        return v.value0(v1);
+    };
+};
+var next = function (v) {
+    return function __do() {
+        var v1 = Control_Monad_ST.readSTRef(v.value1)();
+        var v2 = Control_Monad_ST.modifySTRef(v.value1)(function (v2) {
+            return v2 + 1 | 0;
+        })();
+        return v.value0(v1);
+    };
+};
+var pushWhile = function (p) {
+    return function (iter) {
+        return function (array) {
+            return function __do() {
+                var v = Control_Monad_ST.newSTRef(false)();
+                while (Data_Functor.map(Control_Monad_Eff.functorEff)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraBoolean))(Control_Monad_ST.readSTRef(v))()) {
+                    (function __do() {
+                        var v1 = peek(iter)();
+                        if (v1 instanceof Data_Maybe.Just && p(v1.value0)) {
+                            var v2 = Data_Array_ST.pushSTArray(array)(v1.value0)();
+                            return Data_Functor["void"](Control_Monad_Eff.functorEff)(next(iter))();
+                        };
+                        return Data_Functor["void"](Control_Monad_Eff.functorEff)(Control_Monad_ST.writeSTRef(v)(true))();
+                    })();
+                };
+                return {};
+            };
+        };
+    };
+};
+var pushAll = pushWhile(Data_Function["const"](true));
+var iterator = function (f) {
+    return Data_Functor.map(Control_Monad_Eff.functorEff)(Iterator.create(f))(Control_Monad_ST.newSTRef(0));
+};
+var iterate = function (iter) {
+    return function (f) {
+        return function __do() {
+            var v = Control_Monad_ST.newSTRef(false)();
+            while (Data_Functor.map(Control_Monad_Eff.functorEff)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraBoolean))(Control_Monad_ST.readSTRef(v))()) {
+                (function __do() {
+                    var v1 = next(iter)();
+                    if (v1 instanceof Data_Maybe.Just) {
+                        return f(v1.value0)();
+                    };
+                    if (v1 instanceof Data_Maybe.Nothing) {
+                        return Data_Functor["void"](Control_Monad_Eff.functorEff)(Control_Monad_ST.writeSTRef(v)(true))();
+                    };
+                    throw new Error("Failed pattern match at Data.Array.ST.Iterator line 39, column 5 - line 41, column 46: " + [ v1.constructor.name ]);
+                })();
+            };
+            return {};
+        };
+    };
+};
+var exhausted = function ($27) {
+    return Data_Functor.map(Control_Monad_Eff.functorEff)(Data_Maybe.isNothing)(peek($27));
+};
+module.exports = {
+    exhausted: exhausted, 
+    iterate: iterate, 
+    iterator: iterator, 
+    next: next, 
+    peek: peek, 
+    pushAll: pushAll, 
+    pushWhile: pushWhile
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Eff":71,"../Control.Monad.ST":80,"../Control.Semigroupoid":93,"../Data.Array.ST":118,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Semiring":239,"../Prelude":278}],117:[function(require,module,exports){
+"use strict";
+
+exports.runSTArray = function (f) {
+  return f;
+};
+
+exports.emptySTArray = function () {
+  return [];
+};
+
+exports.peekSTArrayImpl = function (just) {
+  return function (nothing) {
+    return function (xs) {
+      return function (i) {
+        return function () {
+          return i >= 0 && i < xs.length ? just(xs[i]) : nothing;
+        };
+      };
+    };
+  };
+};
+
+exports.pokeSTArray = function (xs) {
+  return function (i) {
+    return function (a) {
+      return function () {
+        var ret = i >= 0 && i < xs.length;
+        if (ret) xs[i] = a;
+        return ret;
+      };
+    };
+  };
+};
+
+exports.pushAllSTArray = function (xs) {
+  return function (as) {
+    return function () {
+      return xs.push.apply(xs, as);
+    };
+  };
+};
+
+exports.spliceSTArray = function (xs) {
+  return function (i) {
+    return function (howMany) {
+      return function (bs) {
+        return function () {
+          return xs.splice.apply(xs, [i, howMany].concat(bs));
+        };
+      };
+    };
+  };
+};
+
+exports.copyImpl = function (xs) {
+  return function () {
+    return xs.slice();
+  };
+};
+
+exports.toAssocArray = function (xs) {
+  return function () {
+    var n = xs.length;
+    var as = new Array(n);
+    for (var i = 0; i < n; i++) as[i] = { value: xs[i], index: i };
+    return as;
+  };
+};
+
+},{}],118:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_ST = require("../Control.Monad.ST");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Maybe = require("../Data.Maybe");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var unsafeFreeze = function ($7) {
+    return Control_Applicative.pure(Control_Monad_Eff.applicativeEff)(Unsafe_Coerce.unsafeCoerce($7));
+};
+var thaw = $foreign.copyImpl;
+var withArray = function (f) {
+    return function (xs) {
+        return function __do() {
+            var v = thaw(xs)();
+            var v1 = f(v)();
+            return unsafeFreeze(v)();
+        };
+    };
+};
+var pushSTArray = function (arr) {
+    return function (a) {
+        return $foreign.pushAllSTArray(arr)([ a ]);
+    };
+};
+var peekSTArray = $foreign.peekSTArrayImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var modifySTArray = function (xs) {
+    return function (i) {
+        return function (f) {
+            return function __do() {
+                var v = peekSTArray(xs)(i)();
+                if (v instanceof Data_Maybe.Just) {
+                    return $foreign.pokeSTArray(xs)(i)(f(v.value0))();
+                };
+                if (v instanceof Data_Maybe.Nothing) {
+                    return false;
+                };
+                throw new Error("Failed pattern match at Data.Array.ST line 120, column 3 - line 122, column 26: " + [ v.constructor.name ]);
+            };
+        };
+    };
+};
+var freeze = $foreign.copyImpl;
+module.exports = {
+    freeze: freeze, 
+    modifySTArray: modifySTArray, 
+    peekSTArray: peekSTArray, 
+    pushSTArray: pushSTArray, 
+    thaw: thaw, 
+    unsafeFreeze: unsafeFreeze, 
+    withArray: withArray, 
+    emptySTArray: $foreign.emptySTArray, 
+    pokeSTArray: $foreign.pokeSTArray, 
+    pushAllSTArray: $foreign.pushAllSTArray, 
+    runSTArray: $foreign.runSTArray, 
+    spliceSTArray: $foreign.spliceSTArray, 
+    toAssocArray: $foreign.toAssocArray
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Eff":71,"../Control.Monad.ST":80,"../Control.Semigroupoid":93,"../Data.Maybe":204,"../Prelude":278,"../Unsafe.Coerce":282,"./foreign":117}],119:[function(require,module,exports){
+"use strict";
+
+//------------------------------------------------------------------------------
+// Array creation --------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.range = function (start) {
+  return function (end) {
+    var step = start > end ? -1 : 1;
+    var result = [];
+    var i = start, n = 0;
+    while (i !== end) {
+      result[n++] = i;
+      i += step;
+    }
+    result[n] = i;
+    return result;
+  };
+};
+
+var replicate = function (count) {
+  return function (value) {
+    if (count < 1) {
+      return [];
+    }
+    var result = new Array(count);
+    return result.fill(value);
+  };
+};
+
+var replicatePolyfill = function (count) {
+  return function (value) {
+    var result = [];
+    var n = 0;
+    for (var i = 0; i < count; i++) {
+      result[n++] = value;
+    }
+    return result;
+  };
+};
+
+// In browsers that have Array.prototype.fill we use it, as it's faster.
+exports.replicate = typeof Array.prototype.fill === "function" ?
+    replicate :
+    replicatePolyfill;
+
+exports.fromFoldableImpl = (function () {
+  // jshint maxparams: 2
+  function Cons(head, tail) {
+    this.head = head;
+    this.tail = tail;
+  }
+  var emptyList = {};
+
+  function curryCons(head) {
+    return function (tail) {
+      return new Cons(head, tail);
+    };
+  }
+
+  function listToArray(list) {
+    var result = [];
+    var count = 0;
+    var xs = list;
+    while (xs !== emptyList) {
+      result[count++] = xs.head;
+      xs = xs.tail;
+    }
+    return result;
+  }
+
+  return function (foldr) {
+    return function (xs) {
+      return listToArray(foldr(curryCons)(emptyList)(xs));
+    };
+  };
+})();
+
+//------------------------------------------------------------------------------
+// Array size ------------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.length = function (xs) {
+  return xs.length;
+};
+
+//------------------------------------------------------------------------------
+// Extending arrays ------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.cons = function (e) {
+  return function (l) {
+    return [e].concat(l);
+  };
+};
+
+exports.snoc = function (l) {
+  return function (e) {
+    var l1 = l.slice();
+    l1.push(e);
+    return l1;
+  };
+};
+
+//------------------------------------------------------------------------------
+// Non-indexed reads -----------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports["uncons'"] = function (empty) {
+  return function (next) {
+    return function (xs) {
+      return xs.length === 0 ? empty({}) : next(xs[0])(xs.slice(1));
+    };
+  };
+};
+
+//------------------------------------------------------------------------------
+// Indexed operations ----------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.indexImpl = function (just) {
+  return function (nothing) {
+    return function (xs) {
+      return function (i) {
+        return i < 0 || i >= xs.length ? nothing :  just(xs[i]);
+      };
+    };
+  };
+};
+
+exports.findIndexImpl = function (just) {
+  return function (nothing) {
+    return function (f) {
+      return function (xs) {
+        for (var i = 0, l = xs.length; i < l; i++) {
+          if (f(xs[i])) return just(i);
+        }
+        return nothing;
+      };
+    };
+  };
+};
+
+exports.findLastIndexImpl = function (just) {
+  return function (nothing) {
+    return function (f) {
+      return function (xs) {
+        for (var i = xs.length - 1; i >= 0; i--) {
+          if (f(xs[i])) return just(i);
+        }
+        return nothing;
+      };
+    };
+  };
+};
+
+exports._insertAt = function (just) {
+  return function (nothing) {
+    return function (i) {
+      return function (a) {
+        return function (l) {
+          if (i < 0 || i > l.length) return nothing;
+          var l1 = l.slice();
+          l1.splice(i, 0, a);
+          return just(l1);
+        };
+      };
+    };
+  };
+};
+
+exports._deleteAt = function (just) {
+  return function (nothing) {
+    return function (i) {
+      return function (l) {
+        if (i < 0 || i >= l.length) return nothing;
+        var l1 = l.slice();
+        l1.splice(i, 1);
+        return just(l1);
+      };
+    };
+  };
+};
+
+exports._updateAt = function (just) {
+  return function (nothing) {
+    return function (i) {
+      return function (a) {
+        return function (l) {
+          if (i < 0 || i >= l.length) return nothing;
+          var l1 = l.slice();
+          l1[i] = a;
+          return just(l1);
+        };
+      };
+    };
+  };
+};
+
+//------------------------------------------------------------------------------
+// Transformations -------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.reverse = function (l) {
+  return l.slice().reverse();
+};
+
+exports.concat = function (xss) {
+  if (xss.length <= 10000) {
+    // This method is faster, but it crashes on big arrays.
+    // So we use it when can and fallback to simple variant otherwise.
+    return Array.prototype.concat.apply([], xss);
+  }
+
+  var result = [];
+  for (var i = 0, l = xss.length; i < l; i++) {
+    var xs = xss[i];
+    for (var j = 0, m = xs.length; j < m; j++) {
+      result.push(xs[j]);
+    }
+  }
+  return result;
+};
+
+exports.filter = function (f) {
+  return function (xs) {
+    return xs.filter(f);
+  };
+};
+
+exports.partition = function (f) {
+  return function (xs) {
+    var yes = [];
+    var no  = [];
+    for (var i = 0; i < xs.length; i++) {
+      var x = xs[i];
+      if (f(x))
+        yes.push(x);
+      else
+        no.push(x);
+    }
+    return { yes: yes, no: no };
+  };
+};
+
+//------------------------------------------------------------------------------
+// Sorting ---------------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.sortImpl = function (f) {
+  return function (l) {
+    // jshint maxparams: 2
+    return l.slice().sort(function (x, y) {
+      return f(x)(y);
+    });
+  };
+};
+
+//------------------------------------------------------------------------------
+// Subarrays -------------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.slice = function (s) {
+  return function (e) {
+    return function (l) {
+      return l.slice(s, e);
+    };
+  };
+};
+
+exports.take = function (n) {
+  return function (l) {
+    return n < 1 ? [] : l.slice(0, n);
+  };
+};
+
+exports.drop = function (n) {
+  return function (l) {
+    return n < 1 ? l : l.slice(n);
+  };
+};
+
+//------------------------------------------------------------------------------
+// Zipping ---------------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.zipWith = function (f) {
+  return function (xs) {
+    return function (ys) {
+      var l = xs.length < ys.length ? xs.length : ys.length;
+      var result = new Array(l);
+      for (var i = 0; i < l; i++) {
+        result[i] = f(xs[i])(ys[i]);
+      }
+      return result;
+    };
+  };
+};
+
+//------------------------------------------------------------------------------
+// Partial ---------------------------------------------------------------------
+//------------------------------------------------------------------------------
+
+exports.unsafeIndexImpl = function (xs) {
+  return function (n) {
+    return xs[n];
+  };
+};
+
+},{}],120:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Monad_ST = require("../Control.Monad.ST");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Array_ST = require("../Data.Array.ST");
+var Data_Array_ST_Iterator = require("../Data.Array.ST.Iterator");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_NonEmpty = require("../Data.NonEmpty");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Partial_Unsafe = require("../Partial.Unsafe");
+var Prelude = require("../Prelude");
+var zipWithA = function (dictApplicative) {
+    return function (f) {
+        return function (xs) {
+            return function (ys) {
+                return Data_Traversable.sequence(Data_Traversable.traversableArray)(dictApplicative)($foreign.zipWith(f)(xs)(ys));
+            };
+        };
+    };
+};
+var zip = $foreign.zipWith(Data_Tuple.Tuple.create);
+var updateAtIndices = function (dictFoldable) {
+    return function (us) {
+        return function (xs) {
+            return Control_Monad_ST.pureST(Data_Array_ST.withArray(function (res) {
+                return Data_Foldable.traverse_(Control_Monad_Eff.applicativeEff)(dictFoldable)(Data_Tuple.uncurry(Data_Array_ST.pokeSTArray(res)))(us);
+            })(xs));
+        };
+    };
+};
+var updateAt = $foreign._updateAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var unsafeIndex = function (dictPartial) {
+    return $foreign.unsafeIndexImpl;
+};
+var uncons = $foreign["uncons'"](Data_Function["const"](Data_Maybe.Nothing.value))(function (x) {
+    return function (xs) {
+        return new Data_Maybe.Just({
+            head: x, 
+            tail: xs
+        });
+    };
+});
+var toUnfoldable = function (dictUnfoldable) {
+    return function (xs) {
+        var len = $foreign.length(xs);
+        var f = function (i) {
+            if (i < len) {
+                return new Data_Maybe.Just(new Data_Tuple.Tuple(unsafeIndex()(xs)(i), i + 1 | 0));
+            };
+            if (Data_Boolean.otherwise) {
+                return Data_Maybe.Nothing.value;
+            };
+            throw new Error("Failed pattern match at Data.Array line 134, column 19 - line 139, column 26: " + [ i.constructor.name ]);
+        };
+        return Data_Unfoldable.unfoldr(dictUnfoldable)(f)(0);
+    };
+};
+var tail = $foreign["uncons'"](Data_Function["const"](Data_Maybe.Nothing.value))(function (v) {
+    return function (xs) {
+        return new Data_Maybe.Just(xs);
+    };
+});
+var sortBy = function (comp) {
+    return function (xs) {
+        var comp$prime = function (x) {
+            return function (y) {
+                var v = comp(x)(y);
+                if (v instanceof Data_Ordering.GT) {
+                    return 1;
+                };
+                if (v instanceof Data_Ordering.EQ) {
+                    return 0;
+                };
+                if (v instanceof Data_Ordering.LT) {
+                    return -1 | 0;
+                };
+                throw new Error("Failed pattern match at Data.Array line 475, column 15 - line 480, column 1: " + [ v.constructor.name ]);
+            };
+        };
+        return $foreign.sortImpl(comp$prime)(xs);
+    };
+};
+var sortWith = function (dictOrd) {
+    return function (f) {
+        return sortBy(Data_Ord.comparing(dictOrd)(f));
+    };
+};
+var sort = function (dictOrd) {
+    return function (xs) {
+        return sortBy(Data_Ord.compare(dictOrd))(xs);
+    };
+};
+var singleton = function (a) {
+    return [ a ];
+};
+var $$null = function (xs) {
+    return $foreign.length(xs) === 0;
+};
+var nubBy = function (eq) {
+    return function (xs) {
+        var v = uncons(xs);
+        if (v instanceof Data_Maybe.Just) {
+            return $foreign.cons(v.value0.head)(nubBy(eq)($foreign.filter(function (y) {
+                return !eq(v.value0.head)(y);
+            })(v.value0.tail)));
+        };
+        if (v instanceof Data_Maybe.Nothing) {
+            return [  ];
+        };
+        throw new Error("Failed pattern match at Data.Array line 583, column 3 - line 585, column 18: " + [ v.constructor.name ]);
+    };
+};
+var nub = function (dictEq) {
+    return nubBy(Data_Eq.eq(dictEq));
+};
+var modifyAtIndices = function (dictFoldable) {
+    return function (is) {
+        return function (f) {
+            return function (xs) {
+                return Control_Monad_ST.pureST(Data_Array_ST.withArray(function (res) {
+                    return Data_Foldable.traverse_(Control_Monad_Eff.applicativeEff)(dictFoldable)(function (i) {
+                        return Data_Array_ST.modifySTArray(res)(i)(f);
+                    })(is);
+                })(xs));
+            };
+        };
+    };
+};
+var mapWithIndex = function (f) {
+    return function (xs) {
+        return $foreign.zipWith(f)($foreign.range(0)($foreign.length(xs) - 1 | 0))(xs);
+    };
+};
+var some = function (dictAlternative) {
+    return function (dictLazy) {
+        return function (v) {
+            return Control_Apply.apply((dictAlternative.Applicative0()).Apply0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())($foreign.cons)(v))(Control_Lazy.defer(dictLazy)(function (v1) {
+                return many(dictAlternative)(dictLazy)(v);
+            }));
+        };
+    };
+};
+var many = function (dictAlternative) {
+    return function (dictLazy) {
+        return function (v) {
+            return Control_Alt.alt((dictAlternative.Plus1()).Alt0())(some(dictAlternative)(dictLazy)(v))(Control_Applicative.pure(dictAlternative.Applicative0())([  ]));
+        };
+    };
+};
+var insertAt = $foreign._insertAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var init = function (xs) {
+    if ($$null(xs)) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (Data_Boolean.otherwise) {
+        return new Data_Maybe.Just($foreign.slice(0)($foreign.length(xs) - 1 | 0)(xs));
+    };
+    throw new Error("Failed pattern match at Data.Array line 250, column 1 - line 252, column 55: " + [ xs.constructor.name ]);
+};
+var index = $foreign.indexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var last = function (xs) {
+    return index(xs)($foreign.length(xs) - 1 | 0);
+};
+var unsnoc = function (xs) {
+    return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
+        return function (v1) {
+            return {
+                init: v, 
+                last: v1
+            };
+        };
+    })(init(xs)))(last(xs));
+};
+var modifyAt = function (i) {
+    return function (f) {
+        return function (xs) {
+            var go = function (x) {
+                return updateAt(i)(f(x))(xs);
+            };
+            return Data_Maybe.maybe(Data_Maybe.Nothing.value)(go)(index(xs)(i));
+        };
+    };
+};
+var span = function (p) {
+    return function (arr) {
+        var go = function (__copy_i) {
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(i) {
+                var v = index(arr)(i);
+                if (v instanceof Data_Maybe.Just) {
+                    var $64 = p(v.value0);
+                    if ($64) {
+                        __copy_i = i + 1 | 0;
+                        return;
+                    };
+                    __tco_done = true;
+                    return new Data_Maybe.Just(i);
+                };
+                if (v instanceof Data_Maybe.Nothing) {
+                    __tco_done = true;
+                    return Data_Maybe.Nothing.value;
+                };
+                throw new Error("Failed pattern match at Data.Array line 541, column 5 - line 543, column 25: " + [ v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__copy_i);
+            };
+            return __tco_result;
+        };
+        var breakIndex = go(0);
+        if (breakIndex instanceof Data_Maybe.Just && breakIndex.value0 === 0) {
+            return {
+                init: [  ], 
+                rest: arr
+            };
+        };
+        if (breakIndex instanceof Data_Maybe.Just) {
+            return {
+                init: $foreign.slice(0)(breakIndex.value0)(arr), 
+                rest: $foreign.slice(breakIndex.value0)($foreign.length(arr))(arr)
+            };
+        };
+        if (breakIndex instanceof Data_Maybe.Nothing) {
+            return {
+                init: arr, 
+                rest: [  ]
+            };
+        };
+        throw new Error("Failed pattern match at Data.Array line 528, column 3 - line 534, column 30: " + [ breakIndex.constructor.name ]);
+    };
+};
+var takeWhile = function (p) {
+    return function (xs) {
+        return (span(p)(xs)).init;
+    };
+};
+var unzip = function (xs) {
+    return Control_Monad_ST.pureST(function __do() {
+        var v = Data_Array_ST.emptySTArray();
+        var v1 = Data_Array_ST.emptySTArray();
+        var v2 = Data_Array_ST_Iterator.iterator(function (v2) {
+            return index(xs)(v2);
+        })();
+        Data_Array_ST_Iterator.iterate(v2)(function (v3) {
+            return function __do() {
+                Data_Functor["void"](Control_Monad_Eff.functorEff)(Data_Array_ST.pushSTArray(v)(v3.value0))();
+                return Data_Functor["void"](Control_Monad_Eff.functorEff)(Data_Array_ST.pushSTArray(v1)(v3.value1))();
+            };
+        })();
+        var v3 = Data_Array_ST.unsafeFreeze(v)();
+        var v4 = Data_Array_ST.unsafeFreeze(v1)();
+        return new Data_Tuple.Tuple(v3, v4);
+    });
+};
+var head = function (xs) {
+    return index(xs)(0);
+};
+var groupBy = function (op) {
+    return function (xs) {
+        return Control_Monad_ST.pureST(function __do() {
+            var v = Data_Array_ST.emptySTArray();
+            var v1 = Data_Array_ST_Iterator.iterator(function (v1) {
+                return index(xs)(v1);
+            })();
+            Data_Array_ST_Iterator.iterate(v1)(function (x) {
+                return Data_Functor["void"](Control_Monad_Eff.functorEff)(function __do() {
+                    var v2 = Data_Array_ST.emptySTArray();
+                    Data_Array_ST_Iterator.pushWhile(op(x))(v1)(v2)();
+                    var v3 = Data_Array_ST.unsafeFreeze(v2)();
+                    return Data_Array_ST.pushSTArray(v)(new Data_NonEmpty.NonEmpty(x, v3))();
+                });
+            })();
+            return Data_Array_ST.unsafeFreeze(v)();
+        });
+    };
+};
+var group = function (dictEq) {
+    return function (xs) {
+        return groupBy(Data_Eq.eq(dictEq))(xs);
+    };
+};
+var group$prime = function (dictOrd) {
+    return function ($93) {
+        return group(dictOrd.Eq0())(sort(dictOrd)($93));
+    };
+};
+var fromFoldable = function (dictFoldable) {
+    return $foreign.fromFoldableImpl(Data_Foldable.foldr(dictFoldable));
+};
+var foldRecM = function (dictMonadRec) {
+    return function (f) {
+        return function (a) {
+            return function (array) {
+                var go = function (res) {
+                    return function (i) {
+                        if (i >= $foreign.length(array)) {
+                            return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(res));
+                        };
+                        if (Data_Boolean.otherwise) {
+                            return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(f(res)(unsafeIndex()(array)(i)))(function (v) {
+                                return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop({
+                                    a: v, 
+                                    b: i + 1 | 0
+                                }));
+                            });
+                        };
+                        throw new Error("Failed pattern match at Data.Array line 693, column 3 - line 697, column 42: " + [ res.constructor.name, i.constructor.name ]);
+                    };
+                };
+                return Control_Monad_Rec_Class.tailRecM2(dictMonadRec)(go)(a)(0);
+            };
+        };
+    };
+};
+var foldM = function (dictMonad) {
+    return function (f) {
+        return function (a) {
+            return $foreign["uncons'"](function (v) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(a);
+            })(function (b) {
+                return function (bs) {
+                    return Control_Bind.bind(dictMonad.Bind1())(f(a)(b))(function (a$prime) {
+                        return foldM(dictMonad)(f)(a$prime)(bs);
+                    });
+                };
+            });
+        };
+    };
+};
+var findLastIndex = $foreign.findLastIndexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var insertBy = function (cmp) {
+    return function (x) {
+        return function (ys) {
+            var i = Data_Maybe.maybe(0)(function (v) {
+                return v + 1 | 0;
+            })(findLastIndex(function (y) {
+                return Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(x)(y))(Data_Ordering.GT.value);
+            })(ys));
+            return Data_Maybe.fromJust()(insertAt(i)(x)(ys));
+        };
+    };
+};
+var insert = function (dictOrd) {
+    return insertBy(Data_Ord.compare(dictOrd));
+};
+var findIndex = $foreign.findIndexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var intersectBy = function (eq) {
+    return function (xs) {
+        return function (ys) {
+            return $foreign.filter(function (x) {
+                return Data_Maybe.isJust(findIndex(eq(x))(ys));
+            })(xs);
+        };
+    };
+};
+var intersect = function (dictEq) {
+    return intersectBy(Data_Eq.eq(dictEq));
+};
+var elemLastIndex = function (dictEq) {
+    return function (x) {
+        return findLastIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var elemIndex = function (dictEq) {
+    return function (x) {
+        return findIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var dropWhile = function (p) {
+    return function (xs) {
+        return (span(p)(xs)).rest;
+    };
+};
+var deleteAt = $foreign._deleteAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var deleteBy = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v2.length === 0) {
+                return [  ];
+            };
+            return Data_Maybe.maybe(v2)(function (i) {
+                return Data_Maybe.fromJust()(deleteAt(i)(v2));
+            })(findIndex(v(v1))(v2));
+        };
+    };
+};
+var unionBy = function (eq) {
+    return function (xs) {
+        return function (ys) {
+            return Data_Semigroup.append(Data_Semigroup.semigroupArray)(xs)(Data_Foldable.foldl(Data_Foldable.foldableArray)(Data_Function.flip(deleteBy(eq)))(nubBy(eq)(ys))(xs));
+        };
+    };
+};
+var union = function (dictEq) {
+    return unionBy(Data_Eq.eq(dictEq));
+};
+var $$delete = function (dictEq) {
+    return deleteBy(Data_Eq.eq(dictEq));
+};
+var difference = function (dictEq) {
+    return Data_Foldable.foldr(Data_Foldable.foldableArray)($$delete(dictEq));
+};
+var concatMap = Data_Function.flip(Control_Bind.bind(Control_Bind.bindArray));
+var mapMaybe = function (f) {
+    return concatMap(function ($94) {
+        return Data_Maybe.maybe([  ])(singleton)(f($94));
+    });
+};
+var filterA = function (dictApplicative) {
+    return function (p) {
+        return function ($95) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(mapMaybe(function (v) {
+                if (v.value1) {
+                    return new Data_Maybe.Just(v.value0);
+                };
+                return Data_Maybe.Nothing.value;
+            }))(Data_Traversable.traverse(Data_Traversable.traversableArray)(dictApplicative)(function (x) {
+                return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Tuple.Tuple.create(x))(p(x));
+            })($95));
+        };
+    };
+};
+var catMaybes = mapMaybe(Control_Category.id(Control_Category.categoryFn));
+var alterAt = function (i) {
+    return function (f) {
+        return function (xs) {
+            var go = function (x) {
+                var v = f(x);
+                if (v instanceof Data_Maybe.Nothing) {
+                    return deleteAt(i)(xs);
+                };
+                if (v instanceof Data_Maybe.Just) {
+                    return updateAt(i)(v.value0)(xs);
+                };
+                throw new Error("Failed pattern match at Data.Array line 390, column 10 - line 392, column 32: " + [ v.constructor.name ]);
+            };
+            return Data_Maybe.maybe(Data_Maybe.Nothing.value)(go)(index(xs)(i));
+        };
+    };
+};
+module.exports = {
+    alterAt: alterAt, 
+    catMaybes: catMaybes, 
+    concatMap: concatMap, 
+    "delete": $$delete, 
+    deleteAt: deleteAt, 
+    deleteBy: deleteBy, 
+    difference: difference, 
+    dropWhile: dropWhile, 
+    elemIndex: elemIndex, 
+    elemLastIndex: elemLastIndex, 
+    filterA: filterA, 
+    findIndex: findIndex, 
+    findLastIndex: findLastIndex, 
+    foldM: foldM, 
+    foldRecM: foldRecM, 
+    fromFoldable: fromFoldable, 
+    group: group, 
+    "group'": group$prime, 
+    groupBy: groupBy, 
+    head: head, 
+    index: index, 
+    init: init, 
+    insert: insert, 
+    insertAt: insertAt, 
+    insertBy: insertBy, 
+    intersect: intersect, 
+    intersectBy: intersectBy, 
+    last: last, 
+    many: many, 
+    mapMaybe: mapMaybe, 
+    mapWithIndex: mapWithIndex, 
+    modifyAt: modifyAt, 
+    modifyAtIndices: modifyAtIndices, 
+    nub: nub, 
+    nubBy: nubBy, 
+    "null": $$null, 
+    singleton: singleton, 
+    some: some, 
+    sort: sort, 
+    sortBy: sortBy, 
+    sortWith: sortWith, 
+    span: span, 
+    tail: tail, 
+    takeWhile: takeWhile, 
+    toUnfoldable: toUnfoldable, 
+    uncons: uncons, 
+    union: union, 
+    unionBy: unionBy, 
+    unsafeIndex: unsafeIndex, 
+    unsnoc: unsnoc, 
+    unzip: unzip, 
+    updateAt: updateAt, 
+    updateAtIndices: updateAtIndices, 
+    zip: zip, 
+    zipWithA: zipWithA, 
+    concat: $foreign.concat, 
+    cons: $foreign.cons, 
+    drop: $foreign.drop, 
+    filter: $foreign.filter, 
+    length: $foreign.length, 
+    partition: $foreign.partition, 
+    range: $foreign.range, 
+    replicate: $foreign.replicate, 
+    reverse: $foreign.reverse, 
+    slice: $foreign.slice, 
+    snoc: $foreign.snoc, 
+    take: $foreign.take, 
+    zipWith: $foreign.zipWith
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Lazy":51,"../Control.Monad.Eff":71,"../Control.Monad.Rec.Class":78,"../Control.Monad.ST":80,"../Control.Semigroupoid":93,"../Data.Array.ST":118,"../Data.Array.ST.Iterator":116,"../Data.Boolean":130,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.NonEmpty":216,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Partial.Unsafe":275,"../Prelude":278,"./foreign":119}],121:[function(require,module,exports){
+arguments[4][100][0].apply(exports,arguments)
+},{"dup":100}],122:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Bifunctor_Clown = require("../Data.Bifunctor.Clown");
+var Data_Bifunctor_Flip = require("../Data.Bifunctor.Flip");
+var Data_Bifunctor_Joker = require("../Data.Bifunctor.Joker");
+var Data_Bifunctor_Product = require("../Data.Bifunctor.Product");
+var Data_Bifunctor_Wrap = require("../Data.Bifunctor.Wrap");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Monoid_Conj = require("../Data.Monoid.Conj");
+var Data_Monoid_Disj = require("../Data.Monoid.Disj");
+var Data_Monoid_Dual = require("../Data.Monoid.Dual");
+var Data_Monoid_Endo = require("../Data.Monoid.Endo");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Bifoldable = function (bifoldMap, bifoldl, bifoldr) {
+    this.bifoldMap = bifoldMap;
+    this.bifoldl = bifoldl;
+    this.bifoldr = bifoldr;
+};
+var bifoldr = function (dict) {
+    return dict.bifoldr;
+};
+var bitraverse_ = function (dictBifoldable) {
+    return function (dictApplicative) {
+        return function (f) {
+            return function (g) {
+                return bifoldr(dictBifoldable)(function ($97) {
+                    return Control_Apply.applySecond(dictApplicative.Apply0())(f($97));
+                })(function ($98) {
+                    return Control_Apply.applySecond(dictApplicative.Apply0())(g($98));
+                })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
+            };
+        };
+    };
+};
+var bifor_ = function (dictBifoldable) {
+    return function (dictApplicative) {
+        return function (t) {
+            return function (f) {
+                return function (g) {
+                    return bitraverse_(dictBifoldable)(dictApplicative)(f)(g)(t);
+                };
+            };
+        };
+    };
+};
+var bisequence_ = function (dictBifoldable) {
+    return function (dictApplicative) {
+        return bitraverse_(dictBifoldable)(dictApplicative)(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var bifoldl = function (dict) {
+    return dict.bifoldl;
+};
+var bifoldableJoker = function (dictFoldable) {
+    return new Bifoldable(function (dictMonoid) {
+        return function (v) {
+            return function (r) {
+                return function (v1) {
+                    return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(r)(v1);
+                };
+            };
+        };
+    }, function (v) {
+        return function (r) {
+            return function (u) {
+                return function (v1) {
+                    return Data_Foldable.foldl(dictFoldable)(r)(u)(v1);
+                };
+            };
+        };
+    }, function (v) {
+        return function (r) {
+            return function (u) {
+                return function (v1) {
+                    return Data_Foldable.foldr(dictFoldable)(r)(u)(v1);
+                };
+            };
+        };
+    });
+};
+var bifoldableClown = function (dictFoldable) {
+    return new Bifoldable(function (dictMonoid) {
+        return function (l) {
+            return function (v) {
+                return function (v1) {
+                    return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(l)(v1);
+                };
+            };
+        };
+    }, function (l) {
+        return function (v) {
+            return function (u) {
+                return function (v1) {
+                    return Data_Foldable.foldl(dictFoldable)(l)(u)(v1);
+                };
+            };
+        };
+    }, function (l) {
+        return function (v) {
+            return function (u) {
+                return function (v1) {
+                    return Data_Foldable.foldr(dictFoldable)(l)(u)(v1);
+                };
+            };
+        };
+    });
+};
+var bifoldMapDefaultR = function (dictBifoldable) {
+    return function (dictMonoid) {
+        return function (f) {
+            return function (g) {
+                return bifoldr(dictBifoldable)(function ($99) {
+                    return Data_Semigroup.append(dictMonoid.Semigroup0())(f($99));
+                })(function ($100) {
+                    return Data_Semigroup.append(dictMonoid.Semigroup0())(g($100));
+                })(Data_Monoid.mempty(dictMonoid));
+            };
+        };
+    };
+};
+var bifoldMapDefaultL = function (dictBifoldable) {
+    return function (dictMonoid) {
+        return function (f) {
+            return function (g) {
+                return bifoldl(dictBifoldable)(function (m) {
+                    return function (a) {
+                        return Data_Semigroup.append(dictMonoid.Semigroup0())(m)(f(a));
+                    };
+                })(function (m) {
+                    return function (b) {
+                        return Data_Semigroup.append(dictMonoid.Semigroup0())(m)(g(b));
+                    };
+                })(Data_Monoid.mempty(dictMonoid));
+            };
+        };
+    };
+};
+var bifoldMap = function (dict) {
+    return dict.bifoldMap;
+};
+var bifoldableFlip = function (dictBifoldable) {
+    return new Bifoldable(function (dictMonoid) {
+        return function (r) {
+            return function (l) {
+                return function (v) {
+                    return bifoldMap(dictBifoldable)(dictMonoid)(l)(r)(v);
+                };
+            };
+        };
+    }, function (r) {
+        return function (l) {
+            return function (u) {
+                return function (v) {
+                    return bifoldl(dictBifoldable)(l)(r)(u)(v);
+                };
+            };
+        };
+    }, function (r) {
+        return function (l) {
+            return function (u) {
+                return function (v) {
+                    return bifoldr(dictBifoldable)(l)(r)(u)(v);
+                };
+            };
+        };
+    });
+};
+var bifoldableWrap = function (dictBifoldable) {
+    return new Bifoldable(function (dictMonoid) {
+        return function (l) {
+            return function (r) {
+                return function (v) {
+                    return bifoldMap(dictBifoldable)(dictMonoid)(l)(r)(v);
+                };
+            };
+        };
+    }, function (l) {
+        return function (r) {
+            return function (u) {
+                return function (v) {
+                    return bifoldl(dictBifoldable)(l)(r)(u)(v);
+                };
+            };
+        };
+    }, function (l) {
+        return function (r) {
+            return function (u) {
+                return function (v) {
+                    return bifoldr(dictBifoldable)(l)(r)(u)(v);
+                };
+            };
+        };
+    });
+};
+var bifoldlDefault = function (dictBifoldable) {
+    return function (f) {
+        return function (g) {
+            return function (z) {
+                return function (p) {
+                    return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(bifoldMap(dictBifoldable)(Data_Monoid_Dual.monoidDual(Data_Monoid_Endo.monoidEndo))(function ($101) {
+                        return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(f)($101)));
+                    })(function ($102) {
+                        return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(g)($102)));
+                    })(p)))(z);
+                };
+            };
+        };
+    };
+};
+var bifoldrDefault = function (dictBifoldable) {
+    return function (f) {
+        return function (g) {
+            return function (z) {
+                return function (p) {
+                    return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(bifoldMap(dictBifoldable)(Data_Monoid_Endo.monoidEndo)(function ($103) {
+                        return Data_Monoid_Endo.Endo(f($103));
+                    })(function ($104) {
+                        return Data_Monoid_Endo.Endo(g($104));
+                    })(p))(z);
+                };
+            };
+        };
+    };
+};
+var bifoldableProduct = function (dictBifoldable) {
+    return function (dictBifoldable1) {
+        return new Bifoldable(function (dictMonoid) {
+            return function (l) {
+                return function (r) {
+                    return function (v) {
+                        return Data_Semigroup.append(dictMonoid.Semigroup0())(bifoldMap(dictBifoldable)(dictMonoid)(l)(r)(v.value0))(bifoldMap(dictBifoldable1)(dictMonoid)(l)(r)(v.value1));
+                    };
+                };
+            };
+        }, function (l) {
+            return function (r) {
+                return function (u) {
+                    return function (m) {
+                        return bifoldlDefault(bifoldableProduct(dictBifoldable)(dictBifoldable1))(l)(r)(u)(m);
+                    };
+                };
+            };
+        }, function (l) {
+            return function (r) {
+                return function (u) {
+                    return function (m) {
+                        return bifoldrDefault(bifoldableProduct(dictBifoldable)(dictBifoldable1))(l)(r)(u)(m);
+                    };
+                };
+            };
+        });
+    };
+};
+var bifold = function (dictBifoldable) {
+    return function (dictMonoid) {
+        return bifoldMap(dictBifoldable)(dictMonoid)(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var biany = function (dictBifoldable) {
+    return function (dictBooleanAlgebra) {
+        return function (p) {
+            return function (q) {
+                return function ($105) {
+                    return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(bifoldMap(dictBifoldable)(Data_Monoid_Disj.monoidDisj(dictBooleanAlgebra.HeytingAlgebra0()))(function ($106) {
+                        return Data_Monoid_Disj.Disj(p($106));
+                    })(function ($107) {
+                        return Data_Monoid_Disj.Disj(q($107));
+                    })($105));
+                };
+            };
+        };
+    };
+};
+var biall = function (dictBifoldable) {
+    return function (dictBooleanAlgebra) {
+        return function (p) {
+            return function (q) {
+                return function ($108) {
+                    return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(bifoldMap(dictBifoldable)(Data_Monoid_Conj.monoidConj(dictBooleanAlgebra.HeytingAlgebra0()))(function ($109) {
+                        return Data_Monoid_Conj.Conj(p($109));
+                    })(function ($110) {
+                        return Data_Monoid_Conj.Conj(q($110));
+                    })($108));
+                };
+            };
+        };
+    };
+};
+module.exports = {
+    Bifoldable: Bifoldable, 
+    biall: biall, 
+    biany: biany, 
+    bifold: bifold, 
+    bifoldMap: bifoldMap, 
+    bifoldMapDefaultL: bifoldMapDefaultL, 
+    bifoldMapDefaultR: bifoldMapDefaultR, 
+    bifoldl: bifoldl, 
+    bifoldlDefault: bifoldlDefault, 
+    bifoldr: bifoldr, 
+    bifoldrDefault: bifoldrDefault, 
+    bifor_: bifor_, 
+    bisequence_: bisequence_, 
+    bitraverse_: bitraverse_, 
+    bifoldableClown: bifoldableClown, 
+    bifoldableJoker: bifoldableJoker, 
+    bifoldableFlip: bifoldableFlip, 
+    bifoldableProduct: bifoldableProduct, 
+    bifoldableWrap: bifoldableWrap
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Bifunctor.Clown":123,"../Data.Bifunctor.Flip":124,"../Data.Bifunctor.Joker":125,"../Data.Bifunctor.Product":126,"../Data.Bifunctor.Wrap":127,"../Data.Foldable":145,"../Data.Function":151,"../Data.Monoid":213,"../Data.Monoid.Conj":208,"../Data.Monoid.Disj":209,"../Data.Monoid.Dual":210,"../Data.Monoid.Endo":211,"../Data.Newtype":215,"../Data.Semigroup":237,"../Data.Unit":259,"../Prelude":278}],123:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Biapplicative = require("../Control.Biapplicative");
+var Control_Biapply = require("../Control.Biapply");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Clown = function (x) {
+    return x;
+};
+var showClown = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Clown " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var ordClown = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeClown = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Clown);
+var functorClown = new Data_Functor.Functor(function (v) {
+    return function (v1) {
+        return v1;
+    };
+});
+var eqClown = function (dictEq) {
+    return dictEq;
+};
+var bifunctorClown = function (dictFunctor) {
+    return new Data_Bifunctor.Bifunctor(function (f) {
+        return function (v) {
+            return function (v1) {
+                return Data_Functor.map(dictFunctor)(f)(v1);
+            };
+        };
+    });
+};
+var biapplyClown = function (dictApply) {
+    return new Control_Biapply.Biapply(function () {
+        return bifunctorClown(dictApply.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return Control_Apply.apply(dictApply)(v)(v1);
+        };
+    });
+};
+var biapplicativeClown = function (dictApplicative) {
+    return new Control_Biapplicative.Biapplicative(function () {
+        return biapplyClown(dictApplicative.Apply0());
+    }, function (a) {
+        return function (v) {
+            return Control_Applicative.pure(dictApplicative)(a);
+        };
+    });
+};
+module.exports = {
+    Clown: Clown, 
+    newtypeClown: newtypeClown, 
+    eqClown: eqClown, 
+    ordClown: ordClown, 
+    showClown: showClown, 
+    functorClown: functorClown, 
+    bifunctorClown: bifunctorClown, 
+    biapplyClown: biapplyClown, 
+    biapplicativeClown: biapplicativeClown
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":128,"../Data.Eq":140,"../Data.Functor":157,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],124:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Biapplicative = require("../Control.Biapplicative");
+var Control_Biapply = require("../Control.Biapply");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Flip = function (x) {
+    return x;
+};
+var showFlip = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Flip " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var ordFlip = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeFlip = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Flip);
+var functorFlip = function (dictBifunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return function (v) {
+            return Data_Bifunctor.lmap(dictBifunctor)(f)(v);
+        };
+    });
+};
+var eqFlip = function (dictEq) {
+    return dictEq;
+};
+var bifunctorFlip = function (dictBifunctor) {
+    return new Data_Bifunctor.Bifunctor(function (f) {
+        return function (g) {
+            return function (v) {
+                return Data_Bifunctor.bimap(dictBifunctor)(g)(f)(v);
+            };
+        };
+    });
+};
+var biapplyFlip = function (dictBiapply) {
+    return new Control_Biapply.Biapply(function () {
+        return bifunctorFlip(dictBiapply.Bifunctor0());
+    }, function (v) {
+        return function (v1) {
+            return Control_Biapply.biapply(dictBiapply)(v)(v1);
+        };
+    });
+};
+var biapplicativeFlip = function (dictBiapplicative) {
+    return new Control_Biapplicative.Biapplicative(function () {
+        return biapplyFlip(dictBiapplicative.Biapply0());
+    }, function (a) {
+        return function (b) {
+            return Control_Biapplicative.bipure(dictBiapplicative)(b)(a);
+        };
+    });
+};
+module.exports = {
+    Flip: Flip, 
+    newtypeFlip: newtypeFlip, 
+    eqFlip: eqFlip, 
+    ordFlip: ordFlip, 
+    showFlip: showFlip, 
+    functorFlip: functorFlip, 
+    bifunctorFlip: bifunctorFlip, 
+    biapplyFlip: biapplyFlip, 
+    biapplicativeFlip: biapplicativeFlip
+};
+
+},{"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":128,"../Data.Eq":140,"../Data.Functor":157,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],125:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Biapplicative = require("../Control.Biapplicative");
+var Control_Biapply = require("../Control.Biapply");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Joker = function (x) {
+    return x;
+};
+var showJoker = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Joker " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var ordJoker = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeJoker = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Joker);
+var functorJoker = function (dictFunctor) {
+    return new Data_Functor.Functor(function (g) {
+        return function (v) {
+            return Data_Functor.map(dictFunctor)(g)(v);
+        };
+    });
+};
+var eqJoker = function (dictEq) {
+    return dictEq;
+};
+var bifunctorJoker = function (dictFunctor) {
+    return new Data_Bifunctor.Bifunctor(function (v) {
+        return function (g) {
+            return function (v1) {
+                return Data_Functor.map(dictFunctor)(g)(v1);
+            };
+        };
+    });
+};
+var biapplyJoker = function (dictApply) {
+    return new Control_Biapply.Biapply(function () {
+        return bifunctorJoker(dictApply.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return Control_Apply.apply(dictApply)(v)(v1);
+        };
+    });
+};
+var biapplicativeJoker = function (dictApplicative) {
+    return new Control_Biapplicative.Biapplicative(function () {
+        return biapplyJoker(dictApplicative.Apply0());
+    }, function (v) {
+        return function (b) {
+            return Control_Applicative.pure(dictApplicative)(b);
+        };
+    });
+};
+module.exports = {
+    Joker: Joker, 
+    newtypeJoker: newtypeJoker, 
+    eqJoker: eqJoker, 
+    ordJoker: ordJoker, 
+    showJoker: showJoker, 
+    functorJoker: functorJoker, 
+    bifunctorJoker: bifunctorJoker, 
+    biapplyJoker: biapplyJoker, 
+    biapplicativeJoker: biapplicativeJoker
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":128,"../Data.Eq":140,"../Data.Functor":157,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],126:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Biapplicative = require("../Control.Biapplicative");
+var Control_Biapply = require("../Control.Biapply");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Eq = require("../Data.Eq");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Product = (function () {
+    function Product(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Product.create = function (value0) {
+        return function (value1) {
+            return new Product(value0, value1);
+        };
+    };
+    return Product;
+})();
+var showProduct = function (dictShow) {
+    return function (dictShow1) {
+        return new Data_Show.Show(function (v) {
+            return "(Product " + (Data_Show.show(dictShow)(v.value0) + (" " + (Data_Show.show(dictShow1)(v.value1) + ")")));
+        });
+    };
+};
+var eqProduct = function (dictEq) {
+    return function (dictEq1) {
+        return new Data_Eq.Eq(function (x) {
+            return function (y) {
+                return Data_Eq.eq(dictEq)(x.value0)(y.value0) && Data_Eq.eq(dictEq1)(x.value1)(y.value1);
+            };
+        });
+    };
+};
+var ordProduct = function (dictOrd) {
+    return function (dictOrd1) {
+        return new Data_Ord.Ord(function () {
+            return eqProduct(dictOrd.Eq0())(dictOrd1.Eq0());
+        }, function (x) {
+            return function (y) {
+                var v = Data_Ord.compare(dictOrd)(x.value0)(y.value0);
+                if (v instanceof Data_Ordering.LT) {
+                    return Data_Ordering.LT.value;
+                };
+                if (v instanceof Data_Ordering.GT) {
+                    return Data_Ordering.GT.value;
+                };
+                return Data_Ord.compare(dictOrd1)(x.value1)(y.value1);
+            };
+        });
+    };
+};
+var bifunctorProduct = function (dictBifunctor) {
+    return function (dictBifunctor1) {
+        return new Data_Bifunctor.Bifunctor(function (f) {
+            return function (g) {
+                return function (v) {
+                    return new Product(Data_Bifunctor.bimap(dictBifunctor)(f)(g)(v.value0), Data_Bifunctor.bimap(dictBifunctor1)(f)(g)(v.value1));
+                };
+            };
+        });
+    };
+};
+var biapplyProduct = function (dictBiapply) {
+    return function (dictBiapply1) {
+        return new Control_Biapply.Biapply(function () {
+            return bifunctorProduct(dictBiapply.Bifunctor0())(dictBiapply1.Bifunctor0());
+        }, function (v) {
+            return function (v1) {
+                return new Product(Control_Biapply.biapply(dictBiapply)(v.value0)(v1.value0), Control_Biapply.biapply(dictBiapply1)(v.value1)(v1.value1));
+            };
+        });
+    };
+};
+var biapplicativeProduct = function (dictBiapplicative) {
+    return function (dictBiapplicative1) {
+        return new Control_Biapplicative.Biapplicative(function () {
+            return biapplyProduct(dictBiapplicative.Biapply0())(dictBiapplicative1.Biapply0());
+        }, function (a) {
+            return function (b) {
+                return new Product(Control_Biapplicative.bipure(dictBiapplicative)(a)(b), Control_Biapplicative.bipure(dictBiapplicative1)(a)(b));
+            };
+        });
+    };
+};
+module.exports = {
+    Product: Product, 
+    eqProduct: eqProduct, 
+    ordProduct: ordProduct, 
+    showProduct: showProduct, 
+    bifunctorProduct: bifunctorProduct, 
+    biapplyProduct: biapplyProduct, 
+    biapplicativeProduct: biapplicativeProduct
+};
+
+},{"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":128,"../Data.Eq":140,"../Data.HeytingAlgebra":162,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],127:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Biapplicative = require("../Control.Biapplicative");
+var Control_Biapply = require("../Control.Biapply");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Wrap = function (x) {
+    return x;
+};
+var showWrap = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Wrap " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var ordWrap = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeWrap = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Wrap);
+var functorWrap = function (dictBifunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return function (v) {
+            return Data_Bifunctor.rmap(dictBifunctor)(f)(v);
+        };
+    });
+};
+var eqWrap = function (dictEq) {
+    return dictEq;
+};
+var bifunctorWrap = function (dictBifunctor) {
+    return new Data_Bifunctor.Bifunctor(function (f) {
+        return function (g) {
+            return function (v) {
+                return Data_Bifunctor.bimap(dictBifunctor)(f)(g)(v);
+            };
+        };
+    });
+};
+var biapplyWrap = function (dictBiapply) {
+    return new Control_Biapply.Biapply(function () {
+        return bifunctorWrap(dictBiapply.Bifunctor0());
+    }, function (v) {
+        return function (v1) {
+            return Control_Biapply.biapply(dictBiapply)(v)(v1);
+        };
+    });
+};
+var biapplicativeWrap = function (dictBiapplicative) {
+    return new Control_Biapplicative.Biapplicative(function () {
+        return biapplyWrap(dictBiapplicative.Biapply0());
+    }, function (a) {
+        return function (b) {
+            return Control_Biapplicative.bipure(dictBiapplicative)(a)(b);
+        };
+    });
+};
+module.exports = {
+    Wrap: Wrap, 
+    newtypeWrap: newtypeWrap, 
+    eqWrap: eqWrap, 
+    ordWrap: ordWrap, 
+    showWrap: showWrap, 
+    functorWrap: functorWrap, 
+    bifunctorWrap: bifunctorWrap, 
+    biapplyWrap: biapplyWrap, 
+    biapplicativeWrap: biapplicativeWrap
+};
+
+},{"../Control.Biapplicative":43,"../Control.Biapply":44,"../Data.Bifunctor":128,"../Data.Eq":140,"../Data.Functor":157,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],128:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Bifunctor = function (bimap) {
+    this.bimap = bimap;
+};
+var bimap = function (dict) {
+    return dict.bimap;
+};
+var lmap = function (dictBifunctor) {
+    return function (f) {
+        return bimap(dictBifunctor)(f)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var rmap = function (dictBifunctor) {
+    return bimap(dictBifunctor)(Control_Category.id(Control_Category.categoryFn));
+};
+module.exports = {
+    Bifunctor: Bifunctor, 
+    bimap: bimap, 
+    lmap: lmap, 
+    rmap: rmap
+};
+
+},{"../Control.Category":47}],129:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Data_Bifoldable = require("../Data.Bifoldable");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Bifunctor_Clown = require("../Data.Bifunctor.Clown");
+var Data_Bifunctor_Flip = require("../Data.Bifunctor.Flip");
+var Data_Bifunctor_Joker = require("../Data.Bifunctor.Joker");
+var Data_Bifunctor_Product = require("../Data.Bifunctor.Product");
+var Data_Bifunctor_Wrap = require("../Data.Bifunctor.Wrap");
+var Data_Functor = require("../Data.Functor");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var Bitraversable = function (Bifoldable1, Bifunctor0, bisequence, bitraverse) {
+    this.Bifoldable1 = Bifoldable1;
+    this.Bifunctor0 = Bifunctor0;
+    this.bisequence = bisequence;
+    this.bitraverse = bitraverse;
+};
+var bitraverse = function (dict) {
+    return dict.bitraverse;
+};
+var lfor = function (dictBitraversable) {
+    return function (dictApplicative) {
+        return function (t) {
+            return function (f) {
+                return bitraverse(dictBitraversable)(dictApplicative)(f)(Control_Applicative.pure(dictApplicative))(t);
+            };
+        };
+    };
+};
+var ltraverse = function (dictBitraversable) {
+    return function (dictApplicative) {
+        return function (f) {
+            return bitraverse(dictBitraversable)(dictApplicative)(f)(Control_Applicative.pure(dictApplicative));
+        };
+    };
+};
+var rfor = function (dictBitraversable) {
+    return function (dictApplicative) {
+        return function (t) {
+            return function (f) {
+                return bitraverse(dictBitraversable)(dictApplicative)(Control_Applicative.pure(dictApplicative))(f)(t);
+            };
+        };
+    };
+};
+var rtraverse = function (dictBitraversable) {
+    return function (dictApplicative) {
+        return bitraverse(dictBitraversable)(dictApplicative)(Control_Applicative.pure(dictApplicative));
+    };
+};
+var bitraversableJoker = function (dictTraversable) {
+    return new Bitraversable(function () {
+        return Data_Bifoldable.bifoldableJoker(dictTraversable.Foldable1());
+    }, function () {
+        return Data_Bifunctor_Joker.bifunctorJoker(dictTraversable.Functor0());
+    }, function (dictApplicative) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Joker.Joker)(Data_Traversable.sequence(dictTraversable)(dictApplicative)(v));
+        };
+    }, function (dictApplicative) {
+        return function (v) {
+            return function (r) {
+                return function (v1) {
+                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Joker.Joker)(Data_Traversable.traverse(dictTraversable)(dictApplicative)(r)(v1));
+                };
+            };
+        };
+    });
+};
+var bitraversableClown = function (dictTraversable) {
+    return new Bitraversable(function () {
+        return Data_Bifoldable.bifoldableClown(dictTraversable.Foldable1());
+    }, function () {
+        return Data_Bifunctor_Clown.bifunctorClown(dictTraversable.Functor0());
+    }, function (dictApplicative) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Clown.Clown)(Data_Traversable.sequence(dictTraversable)(dictApplicative)(v));
+        };
+    }, function (dictApplicative) {
+        return function (l) {
+            return function (v) {
+                return function (v1) {
+                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Clown.Clown)(Data_Traversable.traverse(dictTraversable)(dictApplicative)(l)(v1));
+                };
+            };
+        };
+    });
+};
+var bisequenceDefault = function (dictBitraversable) {
+    return function (dictApplicative) {
+        return bitraverse(dictBitraversable)(dictApplicative)(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var bisequence = function (dict) {
+    return dict.bisequence;
+};
+var bitraversableFlip = function (dictBitraversable) {
+    return new Bitraversable(function () {
+        return Data_Bifoldable.bifoldableFlip(dictBitraversable.Bifoldable1());
+    }, function () {
+        return Data_Bifunctor_Flip.bifunctorFlip(dictBitraversable.Bifunctor0());
+    }, function (dictApplicative) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Flip.Flip)(bisequence(dictBitraversable)(dictApplicative)(v));
+        };
+    }, function (dictApplicative) {
+        return function (r) {
+            return function (l) {
+                return function (v) {
+                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Flip.Flip)(bitraverse(dictBitraversable)(dictApplicative)(l)(r)(v));
+                };
+            };
+        };
+    });
+};
+var bitraversableProduct = function (dictBitraversable) {
+    return function (dictBitraversable1) {
+        return new Bitraversable(function () {
+            return Data_Bifoldable.bifoldableProduct(dictBitraversable.Bifoldable1())(dictBitraversable1.Bifoldable1());
+        }, function () {
+            return Data_Bifunctor_Product.bifunctorProduct(dictBitraversable.Bifunctor0())(dictBitraversable1.Bifunctor0());
+        }, function (dictApplicative) {
+            return function (v) {
+                return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Product.Product.create)(bisequence(dictBitraversable)(dictApplicative)(v.value0)))(bisequence(dictBitraversable1)(dictApplicative)(v.value1));
+            };
+        }, function (dictApplicative) {
+            return function (l) {
+                return function (r) {
+                    return function (v) {
+                        return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Product.Product.create)(bitraverse(dictBitraversable)(dictApplicative)(l)(r)(v.value0)))(bitraverse(dictBitraversable1)(dictApplicative)(l)(r)(v.value1));
+                    };
+                };
+            };
+        });
+    };
+};
+var bitraversableWrap = function (dictBitraversable) {
+    return new Bitraversable(function () {
+        return Data_Bifoldable.bifoldableWrap(dictBitraversable.Bifoldable1());
+    }, function () {
+        return Data_Bifunctor_Wrap.bifunctorWrap(dictBitraversable.Bifunctor0());
+    }, function (dictApplicative) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Wrap.Wrap)(bisequence(dictBitraversable)(dictApplicative)(v));
+        };
+    }, function (dictApplicative) {
+        return function (l) {
+            return function (r) {
+                return function (v) {
+                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Bifunctor_Wrap.Wrap)(bitraverse(dictBitraversable)(dictApplicative)(l)(r)(v));
+                };
+            };
+        };
+    });
+};
+var bitraverseDefault = function (dictBitraversable) {
+    return function (dictApplicative) {
+        return function (f) {
+            return function (g) {
+                return function (t) {
+                    return bisequence(dictBitraversable)(dictApplicative)(Data_Bifunctor.bimap(dictBitraversable.Bifunctor0())(f)(g)(t));
+                };
+            };
+        };
+    };
+};
+var bifor = function (dictBitraversable) {
+    return function (dictApplicative) {
+        return function (t) {
+            return function (f) {
+                return function (g) {
+                    return bitraverse(dictBitraversable)(dictApplicative)(f)(g)(t);
+                };
+            };
+        };
+    };
+};
+module.exports = {
+    Bitraversable: Bitraversable, 
+    bifor: bifor, 
+    bisequence: bisequence, 
+    bisequenceDefault: bisequenceDefault, 
+    bitraverse: bitraverse, 
+    bitraverseDefault: bitraverseDefault, 
+    lfor: lfor, 
+    ltraverse: ltraverse, 
+    rfor: rfor, 
+    rtraverse: rtraverse, 
+    bitraversableClown: bitraversableClown, 
+    bitraversableJoker: bitraversableJoker, 
+    bitraversableFlip: bitraversableFlip, 
+    bitraversableProduct: bitraversableProduct, 
+    bitraversableWrap: bitraversableWrap
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Data.Bifoldable":122,"../Data.Bifunctor":128,"../Data.Bifunctor.Clown":123,"../Data.Bifunctor.Flip":124,"../Data.Bifunctor.Joker":125,"../Data.Bifunctor.Product":126,"../Data.Bifunctor.Wrap":127,"../Data.Functor":157,"../Data.Traversable":254,"../Prelude":278}],130:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var otherwise = true;
+module.exports = {
+    otherwise: otherwise
+};
+
+},{}],131:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Unit = require("../Data.Unit");
+var BooleanAlgebra = function (HeytingAlgebra0) {
+    this.HeytingAlgebra0 = HeytingAlgebra0;
+};
+var booleanAlgebraUnit = new BooleanAlgebra(function () {
+    return Data_HeytingAlgebra.heytingAlgebraUnit;
+});
+var booleanAlgebraFn = function (dictBooleanAlgebra) {
+    return new BooleanAlgebra(function () {
+        return Data_HeytingAlgebra.heytingAlgebraFunction(dictBooleanAlgebra.HeytingAlgebra0());
+    });
+};
+var booleanAlgebraBoolean = new BooleanAlgebra(function () {
+    return Data_HeytingAlgebra.heytingAlgebraBoolean;
+});
+module.exports = {
+    BooleanAlgebra: BooleanAlgebra, 
+    booleanAlgebraBoolean: booleanAlgebraBoolean, 
+    booleanAlgebraUnit: booleanAlgebraUnit, 
+    booleanAlgebraFn: booleanAlgebraFn
+};
+
+},{"../Data.HeytingAlgebra":162,"../Data.Unit":259}],132:[function(require,module,exports){
+"use strict";
+
+exports.topInt = 2147483647;
+exports.bottomInt = -2147483648;
+
+exports.topChar = String.fromCharCode(65535);
+exports.bottomChar = String.fromCharCode(0);
+
+},{}],133:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Unit = require("../Data.Unit");
+var Bounded = function (Ord0, bottom, top) {
+    this.Ord0 = Ord0;
+    this.bottom = bottom;
+    this.top = top;
+};
+var top = function (dict) {
+    return dict.top;
+};
+var boundedUnit = new Bounded(function () {
+    return Data_Ord.ordUnit;
+}, Data_Unit.unit, Data_Unit.unit);
+var boundedOrdering = new Bounded(function () {
+    return Data_Ord.ordOrdering;
+}, Data_Ordering.LT.value, Data_Ordering.GT.value);
+var boundedInt = new Bounded(function () {
+    return Data_Ord.ordInt;
+}, $foreign.bottomInt, $foreign.topInt);
+var boundedChar = new Bounded(function () {
+    return Data_Ord.ordChar;
+}, $foreign.bottomChar, $foreign.topChar);
+var boundedBoolean = new Bounded(function () {
+    return Data_Ord.ordBoolean;
+}, false, true);
+var bottom = function (dict) {
+    return dict.bottom;
+};
+module.exports = {
+    Bounded: Bounded, 
+    bottom: bottom, 
+    top: top, 
+    boundedBoolean: boundedBoolean, 
+    boundedInt: boundedInt, 
+    boundedChar: boundedChar, 
+    boundedOrdering: boundedOrdering, 
+    boundedUnit: boundedUnit
+};
+
+},{"../Data.Ord":222,"../Data.Ordering":223,"../Data.Unit":259,"./foreign":132}],134:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Ring = require("../Data.Ring");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Unit = require("../Data.Unit");
+var CommutativeRing = function (Ring0) {
+    this.Ring0 = Ring0;
+};
+var commutativeRingUnit = new CommutativeRing(function () {
+    return Data_Ring.ringUnit;
+});
+var commutativeRingNumber = new CommutativeRing(function () {
+    return Data_Ring.ringNumber;
+});
+var commutativeRingInt = new CommutativeRing(function () {
+    return Data_Ring.ringInt;
+});
+var commutativeRingFn = function (dictCommutativeRing) {
+    return new CommutativeRing(function () {
+        return Data_Ring.ringFn(dictCommutativeRing.Ring0());
+    });
+};
+module.exports = {
+    CommutativeRing: CommutativeRing, 
+    commutativeRingInt: commutativeRingInt, 
+    commutativeRingNumber: commutativeRingNumber, 
+    commutativeRingUnit: commutativeRingUnit, 
+    commutativeRingFn: commutativeRingFn
+};
+
+},{"../Data.Ring":233,"../Data.Semiring":239,"../Data.Unit":259}],135:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
+var Data_Bounded = require("../Data.Bounded");
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_Eq = require("../Data.Eq");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Field = require("../Data.Field");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Contravariant = require("../Data.Functor.Contravariant");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var Const = function (x) {
+    return x;
+};
+var showConst = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Const " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semiringConst = function (dictSemiring) {
+    return dictSemiring;
+};
+var semigroupoidConst = new Control_Semigroupoid.Semigroupoid(function (v) {
+    return function (v1) {
+        return v1;
+    };
+});
+var semigroupConst = function (dictSemigroup) {
+    return dictSemigroup;
+};
+var ringConst = function (dictRing) {
+    return dictRing;
+};
+var ordConst = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeConst = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Const);
+var monoidConst = function (dictMonoid) {
+    return dictMonoid;
+};
+var heytingAlgebraConst = function (dictHeytingAlgebra) {
+    return dictHeytingAlgebra;
+};
+var functorConst = new Data_Functor.Functor(function (v) {
+    return function (v1) {
+        return v1;
+    };
+});
+var invariantConst = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorConst));
+var foldableConst = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (v) {
+        return function (v1) {
+            return Data_Monoid.mempty(dictMonoid);
+        };
+    };
+}, function (v) {
+    return function (z) {
+        return function (v1) {
+            return z;
+        };
+    };
+}, function (v) {
+    return function (z) {
+        return function (v1) {
+            return z;
+        };
+    };
+});
+var traversableConst = new Data_Traversable.Traversable(function () {
+    return foldableConst;
+}, function () {
+    return functorConst;
+}, function (dictApplicative) {
+    return function (v) {
+        return Control_Applicative.pure(dictApplicative)(v);
+    };
+}, function (dictApplicative) {
+    return function (v) {
+        return function (v1) {
+            return Control_Applicative.pure(dictApplicative)(v1);
+        };
+    };
+});
+var fieldConst = function (dictField) {
+    return dictField;
+};
+var euclideanRingConst = function (dictEuclideanRing) {
+    return dictEuclideanRing;
+};
+var eqConst = function (dictEq) {
+    return dictEq;
+};
+var contravariantConst = new Data_Functor_Contravariant.Contravariant(function (v) {
+    return function (v1) {
+        return v1;
+    };
+});
+var commutativeRingConst = function (dictCommutativeRing) {
+    return dictCommutativeRing;
+};
+var boundedConst = function (dictBounded) {
+    return dictBounded;
+};
+var booleanAlgebraConst = function (dictBooleanAlgebra) {
+    return dictBooleanAlgebra;
+};
+var applyConst = function (dictSemigroup) {
+    return new Control_Apply.Apply(function () {
+        return functorConst;
+    }, function (v) {
+        return function (v1) {
+            return Data_Semigroup.append(dictSemigroup)(v)(v1);
+        };
+    });
+};
+var bindConst = function (dictSemigroup) {
+    return new Control_Bind.Bind(function () {
+        return applyConst(dictSemigroup);
+    }, function (v) {
+        return function (v1) {
+            return v;
+        };
+    });
+};
+var applicativeConst = function (dictMonoid) {
+    return new Control_Applicative.Applicative(function () {
+        return applyConst(dictMonoid.Semigroup0());
+    }, function (v) {
+        return Data_Monoid.mempty(dictMonoid);
+    });
+};
+module.exports = {
+    Const: Const, 
+    newtypeConst: newtypeConst, 
+    eqConst: eqConst, 
+    ordConst: ordConst, 
+    boundedConst: boundedConst, 
+    showConst: showConst, 
+    semigroupoidConst: semigroupoidConst, 
+    semigroupConst: semigroupConst, 
+    monoidConst: monoidConst, 
+    semiringConst: semiringConst, 
+    ringConst: ringConst, 
+    euclideanRingConst: euclideanRingConst, 
+    commutativeRingConst: commutativeRingConst, 
+    fieldConst: fieldConst, 
+    heytingAlgebraConst: heytingAlgebraConst, 
+    booleanAlgebraConst: booleanAlgebraConst, 
+    functorConst: functorConst, 
+    invariantConst: invariantConst, 
+    contravariantConst: contravariantConst, 
+    applyConst: applyConst, 
+    bindConst: bindConst, 
+    applicativeConst: applicativeConst, 
+    foldableConst: foldableConst, 
+    traversableConst: traversableConst
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Semigroupoid":93,"../Data.BooleanAlgebra":131,"../Data.Bounded":133,"../Data.CommutativeRing":134,"../Data.Eq":140,"../Data.EuclideanRing":142,"../Data.Field":143,"../Data.Foldable":145,"../Data.Functor":157,"../Data.Functor.Contravariant":154,"../Data.Functor.Invariant":155,"../Data.HeytingAlgebra":162,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Traversable":254,"../Prelude":278}],136:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Identity = require("../Data.Identity");
+var Data_Newtype = require("../Data.Newtype");
+var Prelude = require("../Prelude");
+var Distributive = function (Functor0, collect, distribute) {
+    this.Functor0 = Functor0;
+    this.collect = collect;
+    this.distribute = distribute;
+};
+var distributiveIdentity = new Distributive(function () {
+    return Data_Identity.functorIdentity;
+}, function (dictFunctor) {
+    return function (f) {
+        return function ($11) {
+            return Data_Identity.Identity(Data_Functor.map(dictFunctor)(function ($12) {
+                return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(f($12));
+            })($11));
+        };
+    };
+}, function (dictFunctor) {
+    return function ($13) {
+        return Data_Identity.Identity(Data_Functor.map(dictFunctor)(Data_Newtype.unwrap(Data_Identity.newtypeIdentity))($13));
+    };
+});
+var distribute = function (dict) {
+    return dict.distribute;
+};
+var distributiveFunction = new Distributive(function () {
+    return Data_Functor.functorFn;
+}, function (dictFunctor) {
+    return function (f) {
+        return function ($14) {
+            return distribute(distributiveFunction)(dictFunctor)(Data_Functor.map(dictFunctor)(f)($14));
+        };
+    };
+}, function (dictFunctor) {
+    return function (a) {
+        return function (e) {
+            return Data_Functor.map(dictFunctor)(function (v) {
+                return v(e);
+            })(a);
+        };
+    };
+});
+var cotraverse = function (dictDistributive) {
+    return function (dictFunctor) {
+        return function (f) {
+            return function ($15) {
+                return Data_Functor.map(dictDistributive.Functor0())(f)(distribute(dictDistributive)(dictFunctor)($15));
+            };
+        };
+    };
+};
+var collectDefault = function (dictDistributive) {
+    return function (dictFunctor) {
+        return function (f) {
+            return function ($16) {
+                return distribute(dictDistributive)(dictFunctor)(Data_Functor.map(dictFunctor)(f)($16));
+            };
+        };
+    };
+};
+var collect = function (dict) {
+    return dict.collect;
+};
+var distributeDefault = function (dictDistributive) {
+    return function (dictFunctor) {
+        return collect(dictDistributive)(dictFunctor)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+module.exports = {
+    Distributive: Distributive, 
+    collect: collect, 
+    collectDefault: collectDefault, 
+    cotraverse: cotraverse, 
+    distribute: distribute, 
+    distributeDefault: distributeDefault, 
+    distributiveIdentity: distributiveIdentity, 
+    distributiveFunction: distributiveFunction
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Functor":157,"../Data.Identity":163,"../Data.Newtype":215,"../Prelude":278}],137:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Ring = require("../Data.Ring");
+var Data_Semiring = require("../Data.Semiring");
+var DivisionRing = function (Ring0, recip) {
+    this.Ring0 = Ring0;
+    this.recip = recip;
+};
+var recip = function (dict) {
+    return dict.recip;
+};
+var rightDiv = function (dictDivisionRing) {
+    return function (a) {
+        return function (b) {
+            return Data_Semiring.mul((dictDivisionRing.Ring0()).Semiring0())(a)(recip(dictDivisionRing)(b));
+        };
+    };
+};
+var leftDiv = function (dictDivisionRing) {
+    return function (a) {
+        return function (b) {
+            return Data_Semiring.mul((dictDivisionRing.Ring0()).Semiring0())(recip(dictDivisionRing)(b))(a);
+        };
+    };
+};
+var divisionringNumber = new DivisionRing(function () {
+    return Data_Ring.ringNumber;
+}, function (x) {
+    return 1.0 / x;
+});
+module.exports = {
+    DivisionRing: DivisionRing, 
+    leftDiv: leftDiv, 
+    recip: recip, 
+    rightDiv: rightDiv, 
+    divisionringNumber: divisionringNumber
+};
+
+},{"../Data.EuclideanRing":142,"../Data.Ring":233,"../Data.Semiring":239}],138:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bifoldable = require("../Data.Bifoldable");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Bitraversable = require("../Data.Bitraversable");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var Left = (function () {
+    function Left(value0) {
+        this.value0 = value0;
+    };
+    Left.create = function (value0) {
+        return new Left(value0);
+    };
+    return Left;
+})();
+var Right = (function () {
+    function Right(value0) {
+        this.value0 = value0;
+    };
+    Right.create = function (value0) {
+        return new Right(value0);
+    };
+    return Right;
+})();
+var showEither = function (dictShow) {
+    return function (dictShow1) {
+        return new Data_Show.Show(function (v) {
+            if (v instanceof Left) {
+                return "(Left " + (Data_Show.show(dictShow)(v.value0) + ")");
+            };
+            if (v instanceof Right) {
+                return "(Right " + (Data_Show.show(dictShow1)(v.value0) + ")");
+            };
+            throw new Error("Failed pattern match at Data.Either line 161, column 3 - line 162, column 3: " + [ v.constructor.name ]);
+        });
+    };
+};
+var note = function (a) {
+    return Data_Maybe.maybe(new Left(a))(Right.create);
+};
+var functorEither = new Data_Functor.Functor(function (v) {
+    return function (v1) {
+        if (v1 instanceof Left) {
+            return new Left(v1.value0);
+        };
+        if (v1 instanceof Right) {
+            return new Right(v(v1.value0));
+        };
+        throw new Error("Failed pattern match at Data.Either line 37, column 3 - line 37, column 26: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var invariantEither = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorEither));
+var fromRight = function (dictPartial) {
+    return function (v) {
+        var __unused = function (dictPartial1) {
+            return function ($dollar62) {
+                return $dollar62;
+            };
+        };
+        return __unused(dictPartial)((function () {
+            if (v instanceof Right) {
+                return v.value0;
+            };
+            throw new Error("Failed pattern match at Data.Either line 253, column 1 - line 253, column 24: " + [ v.constructor.name ]);
+        })());
+    };
+};
+var fromLeft = function (dictPartial) {
+    return function (v) {
+        var __unused = function (dictPartial1) {
+            return function ($dollar66) {
+                return $dollar66;
+            };
+        };
+        return __unused(dictPartial)((function () {
+            if (v instanceof Left) {
+                return v.value0;
+            };
+            throw new Error("Failed pattern match at Data.Either line 248, column 1 - line 248, column 22: " + [ v.constructor.name ]);
+        })());
+    };
+};
+var foldableEither = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            if (v instanceof Left) {
+                return Data_Monoid.mempty(dictMonoid);
+            };
+            if (v instanceof Right) {
+                return f(v.value0);
+            };
+            throw new Error("Failed pattern match at Data.Either line 189, column 3 - line 189, column 31: " + [ f.constructor.name, v.constructor.name ]);
+        };
+    };
+}, function (v) {
+    return function (z) {
+        return function (v1) {
+            if (v1 instanceof Left) {
+                return z;
+            };
+            if (v1 instanceof Right) {
+                return v(z)(v1.value0);
+            };
+            throw new Error("Failed pattern match at Data.Either line 187, column 3 - line 187, column 26: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
+        };
+    };
+}, function (v) {
+    return function (z) {
+        return function (v1) {
+            if (v1 instanceof Left) {
+                return z;
+            };
+            if (v1 instanceof Right) {
+                return v(v1.value0)(z);
+            };
+            throw new Error("Failed pattern match at Data.Either line 185, column 3 - line 185, column 26: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
+        };
+    };
+});
+var traversableEither = new Data_Traversable.Traversable(function () {
+    return foldableEither;
+}, function () {
+    return functorEither;
+}, function (dictApplicative) {
+    return function (v) {
+        if (v instanceof Left) {
+            return Control_Applicative.pure(dictApplicative)(new Left(v.value0));
+        };
+        if (v instanceof Right) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v.value0);
+        };
+        throw new Error("Failed pattern match at Data.Either line 203, column 3 - line 203, column 36: " + [ v.constructor.name ]);
+    };
+}, function (dictApplicative) {
+    return function (v) {
+        return function (v1) {
+            if (v1 instanceof Left) {
+                return Control_Applicative.pure(dictApplicative)(new Left(v1.value0));
+            };
+            if (v1 instanceof Right) {
+                return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v(v1.value0));
+            };
+            throw new Error("Failed pattern match at Data.Either line 201, column 3 - line 201, column 39: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    };
+});
+var extendEither = new Control_Extend.Extend(function () {
+    return functorEither;
+}, function (v) {
+    return function (v1) {
+        if (v1 instanceof Left) {
+            return new Left(v1.value0);
+        };
+        return new Right(v(v1));
+    };
+});
+var eqEither = function (dictEq) {
+    return function (dictEq1) {
+        return new Data_Eq.Eq(function (x) {
+            return function (y) {
+                if (x instanceof Left && y instanceof Left) {
+                    return Data_Eq.eq(dictEq)(x.value0)(y.value0);
+                };
+                if (x instanceof Right && y instanceof Right) {
+                    return Data_Eq.eq(dictEq1)(x.value0)(y.value0);
+                };
+                return false;
+            };
+        });
+    };
+};
+var ordEither = function (dictOrd) {
+    return function (dictOrd1) {
+        return new Data_Ord.Ord(function () {
+            return eqEither(dictOrd.Eq0())(dictOrd1.Eq0());
+        }, function (x) {
+            return function (y) {
+                if (x instanceof Left && y instanceof Left) {
+                    return Data_Ord.compare(dictOrd)(x.value0)(y.value0);
+                };
+                if (x instanceof Left) {
+                    return Data_Ordering.LT.value;
+                };
+                if (y instanceof Left) {
+                    return Data_Ordering.GT.value;
+                };
+                if (x instanceof Right && y instanceof Right) {
+                    return Data_Ord.compare(dictOrd1)(x.value0)(y.value0);
+                };
+                throw new Error("Failed pattern match at Data.Either line 176, column 1 - line 176, column 64: " + [ x.constructor.name, y.constructor.name ]);
+            };
+        });
+    };
+};
+var eq1Either = function (dictEq) {
+    return new Data_Eq.Eq1(function (dictEq1) {
+        return Data_Eq.eq(eqEither(dictEq)(dictEq1));
+    });
+};
+var ord1Either = function (dictOrd) {
+    return new Data_Ord.Ord1(function () {
+        return eq1Either(dictOrd.Eq0());
+    }, function (dictOrd1) {
+        return Data_Ord.compare(ordEither(dictOrd)(dictOrd1));
+    });
+};
+var either = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v2 instanceof Left) {
+                return v(v2.value0);
+            };
+            if (v2 instanceof Right) {
+                return v1(v2.value0);
+            };
+            throw new Error("Failed pattern match at Data.Either line 230, column 1 - line 230, column 26: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+        };
+    };
+};
+var hush = either(Data_Function["const"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);
+var isLeft = either(Data_Function["const"](true))(Data_Function["const"](false));
+var isRight = either(Data_Function["const"](false))(Data_Function["const"](true));
+var choose = function (dictAlt) {
+    return function (a) {
+        return function (b) {
+            return Control_Alt.alt(dictAlt)(Data_Functor.map(dictAlt.Functor0())(Left.create)(a))(Data_Functor.map(dictAlt.Functor0())(Right.create)(b));
+        };
+    };
+};
+var boundedEither = function (dictBounded) {
+    return function (dictBounded1) {
+        return new Data_Bounded.Bounded(function () {
+            return ordEither(dictBounded.Ord0())(dictBounded1.Ord0());
+        }, new Left(Data_Bounded.bottom(dictBounded)), new Right(Data_Bounded.top(dictBounded1)));
+    };
+};
+var bifunctorEither = new Data_Bifunctor.Bifunctor(function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v2 instanceof Left) {
+                return new Left(v(v2.value0));
+            };
+            if (v2 instanceof Right) {
+                return new Right(v1(v2.value0));
+            };
+            throw new Error("Failed pattern match at Data.Either line 44, column 3 - line 44, column 34: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+        };
+    };
+});
+var bifoldableEither = new Data_Bifoldable.Bifoldable(function (dictMonoid) {
+    return function (v) {
+        return function (v1) {
+            return function (v2) {
+                if (v2 instanceof Left) {
+                    return v(v2.value0);
+                };
+                if (v2 instanceof Right) {
+                    return v1(v2.value0);
+                };
+                throw new Error("Failed pattern match at Data.Either line 197, column 3 - line 197, column 31: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+            };
+        };
+    };
+}, function (v) {
+    return function (v1) {
+        return function (z) {
+            return function (v2) {
+                if (v2 instanceof Left) {
+                    return v(z)(v2.value0);
+                };
+                if (v2 instanceof Right) {
+                    return v1(z)(v2.value0);
+                };
+                throw new Error("Failed pattern match at Data.Either line 195, column 3 - line 195, column 33: " + [ v.constructor.name, v1.constructor.name, z.constructor.name, v2.constructor.name ]);
+            };
+        };
+    };
+}, function (v) {
+    return function (v1) {
+        return function (z) {
+            return function (v2) {
+                if (v2 instanceof Left) {
+                    return v(v2.value0)(z);
+                };
+                if (v2 instanceof Right) {
+                    return v1(v2.value0)(z);
+                };
+                throw new Error("Failed pattern match at Data.Either line 193, column 3 - line 193, column 33: " + [ v.constructor.name, v1.constructor.name, z.constructor.name, v2.constructor.name ]);
+            };
+        };
+    };
+});
+var bitraversableEither = new Data_Bitraversable.Bitraversable(function () {
+    return bifoldableEither;
+}, function () {
+    return bifunctorEither;
+}, function (dictApplicative) {
+    return function (v) {
+        if (v instanceof Left) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Left.create)(v.value0);
+        };
+        if (v instanceof Right) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v.value0);
+        };
+        throw new Error("Failed pattern match at Data.Either line 209, column 3 - line 209, column 35: " + [ v.constructor.name ]);
+    };
+}, function (dictApplicative) {
+    return function (v) {
+        return function (v1) {
+            return function (v2) {
+                if (v2 instanceof Left) {
+                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Left.create)(v(v2.value0));
+                };
+                if (v2 instanceof Right) {
+                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Right.create)(v1(v2.value0));
+                };
+                throw new Error("Failed pattern match at Data.Either line 207, column 3 - line 207, column 41: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+            };
+        };
+    };
+});
+var applyEither = new Control_Apply.Apply(function () {
+    return functorEither;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Left) {
+            return new Left(v.value0);
+        };
+        if (v instanceof Right) {
+            return Data_Functor.map(functorEither)(v.value0)(v1);
+        };
+        throw new Error("Failed pattern match at Data.Either line 80, column 3 - line 80, column 28: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var bindEither = new Control_Bind.Bind(function () {
+    return applyEither;
+}, either(function (e) {
+    return function (v) {
+        return new Left(e);
+    };
+})(function (a) {
+    return function (f) {
+        return f(a);
+    };
+}));
+var semigroupEither = function (dictSemigroup) {
+    return new Data_Semigroup.Semigroup(function (x) {
+        return function (y) {
+            return Control_Apply.apply(applyEither)(Data_Functor.map(functorEither)(Data_Semigroup.append(dictSemigroup))(x))(y);
+        };
+    });
+};
+var semiringEither = function (dictSemiring) {
+    return new Data_Semiring.Semiring(function (x) {
+        return function (y) {
+            return Control_Apply.apply(applyEither)(Data_Functor.map(functorEither)(Data_Semiring.add(dictSemiring))(x))(y);
+        };
+    }, function (x) {
+        return function (y) {
+            return Control_Apply.apply(applyEither)(Data_Functor.map(functorEither)(Data_Semiring.mul(dictSemiring))(x))(y);
+        };
+    }, new Right(Data_Semiring.one(dictSemiring)), new Right(Data_Semiring.zero(dictSemiring)));
+};
+var applicativeEither = new Control_Applicative.Applicative(function () {
+    return applyEither;
+}, Right.create);
+var monadEither = new Control_Monad.Monad(function () {
+    return applicativeEither;
+}, function () {
+    return bindEither;
+});
+var altEither = new Control_Alt.Alt(function () {
+    return functorEither;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Left) {
+            return v1;
+        };
+        return v;
+    };
+});
+module.exports = {
+    Left: Left, 
+    Right: Right, 
+    choose: choose, 
+    either: either, 
+    fromLeft: fromLeft, 
+    fromRight: fromRight, 
+    hush: hush, 
+    isLeft: isLeft, 
+    isRight: isRight, 
+    note: note, 
+    functorEither: functorEither, 
+    invariantEither: invariantEither, 
+    bifunctorEither: bifunctorEither, 
+    applyEither: applyEither, 
+    applicativeEither: applicativeEither, 
+    altEither: altEither, 
+    bindEither: bindEither, 
+    monadEither: monadEither, 
+    extendEither: extendEither, 
+    showEither: showEither, 
+    eqEither: eqEither, 
+    eq1Either: eq1Either, 
+    ordEither: ordEither, 
+    ord1Either: ord1Either, 
+    boundedEither: boundedEither, 
+    foldableEither: foldableEither, 
+    bifoldableEither: bifoldableEither, 
+    traversableEither: traversableEither, 
+    bitraversableEither: bitraversableEither, 
+    semiringEither: semiringEither, 
+    semigroupEither: semigroupEither
+};
+
+},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bifoldable":122,"../Data.Bifunctor":128,"../Data.Bitraversable":129,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Traversable":254,"../Prelude":278}],139:[function(require,module,exports){
+"use strict";
+
+exports.refEq = function (r1) {
+  return function (r2) {
+    return r1 === r2;
+  };
+};
+
+exports.refIneq = function (r1) {
+  return function (r2) {
+    return r1 !== r2;
+  };
+};
+
+exports.eqArrayImpl = function (f) {
+  return function (xs) {
+    return function (ys) {
+      if (xs.length !== ys.length) return false;
+      for (var i = 0; i < xs.length; i++) {
+        if (!f(xs[i])(ys[i])) return false;
+      }
+      return true;
+    };
+  };
+};
+
+},{}],140:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Unit = require("../Data.Unit");
+var Data_Void = require("../Data.Void");
+var Eq = function (eq) {
+    this.eq = eq;
+};
+var Eq1 = function (eq1) {
+    this.eq1 = eq1;
+};
+var eqVoid = new Eq(function (v) {
+    return function (v1) {
+        return true;
+    };
+});
+var eqUnit = new Eq(function (v) {
+    return function (v1) {
+        return true;
+    };
+});
+var eqString = new Eq($foreign.refEq);
+var eqNumber = new Eq($foreign.refEq);
+var eqInt = new Eq($foreign.refEq);
+var eqChar = new Eq($foreign.refEq);
+var eqBoolean = new Eq($foreign.refEq);
+var eq1 = function (dict) {
+    return dict.eq1;
+};
+var eq = function (dict) {
+    return dict.eq;
+};
+var eqArray = function (dictEq) {
+    return new Eq($foreign.eqArrayImpl(eq(dictEq)));
+};
+var eq1Array = new Eq1(function (dictEq) {
+    return eq(eqArray(dictEq));
+});
+var notEq = function (dictEq) {
+    return function (x) {
+        return function (y) {
+            return eq(eqBoolean)(eq(dictEq)(x)(y))(false);
+        };
+    };
+};
+var notEq1 = function (dictEq1) {
+    return function (dictEq) {
+        return function (x) {
+            return function (y) {
+                return eq(eqBoolean)(eq1(dictEq1)(dictEq)(x)(y))(false);
+            };
+        };
+    };
+};
+module.exports = {
+    Eq: Eq, 
+    Eq1: Eq1, 
+    eq: eq, 
+    eq1: eq1, 
+    notEq: notEq, 
+    notEq1: notEq1, 
+    eqBoolean: eqBoolean, 
+    eqInt: eqInt, 
+    eqNumber: eqNumber, 
+    eqChar: eqChar, 
+    eqString: eqString, 
+    eqUnit: eqUnit, 
+    eqVoid: eqVoid, 
+    eqArray: eqArray, 
+    eq1Array: eq1Array
+};
+
+},{"../Data.Unit":259,"../Data.Void":260,"./foreign":139}],141:[function(require,module,exports){
+"use strict";
+
+exports.intDegree = function (x) {
+  return Math.min(Math.abs(x), 2147483647);
+};
+
+exports.intDiv = function (x) {
+  return function (y) {
+    /* jshint bitwise: false */
+    return x / y | 0;
+  };
+};
+
+exports.intMod = function (x) {
+  return function (y) {
+    return x % y;
+  };
+};
+
+exports.numDiv = function (n1) {
+  return function (n2) {
+    return n1 / n2;
+  };
+};
+
+},{}],142:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_Eq = require("../Data.Eq");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Ring = require("../Data.Ring");
+var Data_Semiring = require("../Data.Semiring");
+var EuclideanRing = function (CommutativeRing0, degree, div, mod) {
+    this.CommutativeRing0 = CommutativeRing0;
+    this.degree = degree;
+    this.div = div;
+    this.mod = mod;
+};
+var mod = function (dict) {
+    return dict.mod;
+};
+var gcd = function (__copy_dictEq) {
+    return function (__copy_dictEuclideanRing) {
+        return function (__copy_a) {
+            return function (__copy_b) {
+                var __tco_dictEq = __copy_dictEq;
+                var __tco_dictEuclideanRing = __copy_dictEuclideanRing;
+                var __tco_a = __copy_a;
+                var __tco_done = false;
+                var __tco_result;
+                function __tco_loop(dictEq, dictEuclideanRing, a, b) {
+                    var $7 = Data_Eq.eq(dictEq)(b)(Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0()));
+                    if ($7) {
+                        __tco_done = true;
+                        return a;
+                    };
+                    __tco_dictEq = dictEq;
+                    __tco_dictEuclideanRing = dictEuclideanRing;
+                    __tco_a = b;
+                    __copy_b = mod(dictEuclideanRing)(a)(b);
+                    return;
+                };
+                while (!__tco_done) {
+                    __tco_result = __tco_loop(__tco_dictEq, __tco_dictEuclideanRing, __tco_a, __copy_b);
+                };
+                return __tco_result;
+            };
+        };
+    };
+};
+var euclideanRingNumber = new EuclideanRing(function () {
+    return Data_CommutativeRing.commutativeRingNumber;
+}, function (v) {
+    return 1;
+}, $foreign.numDiv, function (v) {
+    return function (v1) {
+        return 0.0;
+    };
+});
+var euclideanRingInt = new EuclideanRing(function () {
+    return Data_CommutativeRing.commutativeRingInt;
+}, $foreign.intDegree, $foreign.intDiv, $foreign.intMod);
+var div = function (dict) {
+    return dict.div;
+};
+var lcm = function (dictEq) {
+    return function (dictEuclideanRing) {
+        return function (a) {
+            return function (b) {
+                var $8 = Data_Eq.eq(dictEq)(a)(Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0())) || Data_Eq.eq(dictEq)(b)(Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0()));
+                if ($8) {
+                    return Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0());
+                };
+                return div(dictEuclideanRing)(Data_Semiring.mul(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0())(a)(b))(gcd(dictEq)(dictEuclideanRing)(a)(b));
+            };
+        };
+    };
+};
+var degree = function (dict) {
+    return dict.degree;
+};
+module.exports = {
+    EuclideanRing: EuclideanRing, 
+    degree: degree, 
+    div: div, 
+    gcd: gcd, 
+    lcm: lcm, 
+    mod: mod, 
+    euclideanRingInt: euclideanRingInt, 
+    euclideanRingNumber: euclideanRingNumber
+};
+
+},{"../Data.BooleanAlgebra":131,"../Data.CommutativeRing":134,"../Data.Eq":140,"../Data.HeytingAlgebra":162,"../Data.Ring":233,"../Data.Semiring":239,"./foreign":141}],143:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_DivisionRing = require("../Data.DivisionRing");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Ring = require("../Data.Ring");
+var Data_Semiring = require("../Data.Semiring");
+var Field = function (EuclideanRing0) {
+    this.EuclideanRing0 = EuclideanRing0;
+};
+var fieldNumber = new Field(function () {
+    return Data_EuclideanRing.euclideanRingNumber;
+});
+module.exports = {
+    Field: Field, 
+    fieldNumber: fieldNumber
+};
+
+},{"../Data.CommutativeRing":134,"../Data.DivisionRing":137,"../Data.EuclideanRing":142,"../Data.Ring":233,"../Data.Semiring":239}],144:[function(require,module,exports){
+"use strict";
+
+exports.foldrArray = function (f) {
+  return function (init) {
+    return function (xs) {
+      var acc = init;
+      var len = xs.length;
+      for (var i = len - 1; i >= 0; i--) {
+        acc = f(xs[i])(acc);
+      }
+      return acc;
+    };
+  };
+};
+
+exports.foldlArray = function (f) {
+  return function (init) {
+    return function (xs) {
+      var acc = init;
+      var len = xs.length;
+      for (var i = 0; i < len; i++) {
+        acc = f(acc)(xs[i]);
+      }
+      return acc;
+    };
+  };
+};
+
+},{}],145:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Alt = require("../Control.Alt");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Maybe_First = require("../Data.Maybe.First");
+var Data_Maybe_Last = require("../Data.Maybe.Last");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Monoid_Additive = require("../Data.Monoid.Additive");
+var Data_Monoid_Conj = require("../Data.Monoid.Conj");
+var Data_Monoid_Disj = require("../Data.Monoid.Disj");
+var Data_Monoid_Dual = require("../Data.Monoid.Dual");
+var Data_Monoid_Endo = require("../Data.Monoid.Endo");
+var Data_Monoid_Multiplicative = require("../Data.Monoid.Multiplicative");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Foldable = function (foldMap, foldl, foldr) {
+    this.foldMap = foldMap;
+    this.foldl = foldl;
+    this.foldr = foldr;
+};
+var foldr = function (dict) {
+    return dict.foldr;
+};
+var $$null = function (dictFoldable) {
+    return foldr(dictFoldable)(function (v) {
+        return function (v1) {
+            return false;
+        };
+    })(true);
+};
+var oneOf = function (dictFoldable) {
+    return function (dictPlus) {
+        return foldr(dictFoldable)(Control_Alt.alt(dictPlus.Alt0()))(Control_Plus.empty(dictPlus));
+    };
+};
+var traverse_ = function (dictApplicative) {
+    return function (dictFoldable) {
+        return function (f) {
+            return foldr(dictFoldable)(function ($181) {
+                return Control_Apply.applySecond(dictApplicative.Apply0())(f($181));
+            })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
+        };
+    };
+};
+var for_ = function (dictApplicative) {
+    return function (dictFoldable) {
+        return Data_Function.flip(traverse_(dictApplicative)(dictFoldable));
+    };
+};
+var sequence_ = function (dictApplicative) {
+    return function (dictFoldable) {
+        return traverse_(dictApplicative)(dictFoldable)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var foldl = function (dict) {
+    return dict.foldl;
+};
+var intercalate = function (dictFoldable) {
+    return function (dictMonoid) {
+        return function (sep) {
+            return function (xs) {
+                var go = function (v) {
+                    return function (x) {
+                        if (v.init) {
+                            return {
+                                init: false, 
+                                acc: x
+                            };
+                        };
+                        return {
+                            init: false, 
+                            acc: Data_Semigroup.append(dictMonoid.Semigroup0())(v.acc)(Data_Semigroup.append(dictMonoid.Semigroup0())(sep)(x))
+                        };
+                    };
+                };
+                return (foldl(dictFoldable)(go)({
+                    init: true, 
+                    acc: Data_Monoid.mempty(dictMonoid)
+                })(xs)).acc;
+            };
+        };
+    };
+};
+var length = function (dictFoldable) {
+    return function (dictSemiring) {
+        return foldl(dictFoldable)(function (c) {
+            return function (v) {
+                return Data_Semiring.add(dictSemiring)(Data_Semiring.one(dictSemiring))(c);
+            };
+        })(Data_Semiring.zero(dictSemiring));
+    };
+};
+var maximumBy = function (dictFoldable) {
+    return function (cmp) {
+        var max$prime = function (v) {
+            return function (v1) {
+                if (v instanceof Data_Maybe.Nothing) {
+                    return new Data_Maybe.Just(v1);
+                };
+                if (v instanceof Data_Maybe.Just) {
+                    return new Data_Maybe.Just((function () {
+                        var $104 = Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1))(Data_Ordering.GT.value);
+                        if ($104) {
+                            return v.value0;
+                        };
+                        return v1;
+                    })());
+                };
+                throw new Error("Failed pattern match at Data.Foldable line 347, column 3 - line 347, column 27: " + [ v.constructor.name, v1.constructor.name ]);
+            };
+        };
+        return foldl(dictFoldable)(max$prime)(Data_Maybe.Nothing.value);
+    };
+};
+var maximum = function (dictOrd) {
+    return function (dictFoldable) {
+        return maximumBy(dictFoldable)(Data_Ord.compare(dictOrd));
+    };
+};
+var minimumBy = function (dictFoldable) {
+    return function (cmp) {
+        var min$prime = function (v) {
+            return function (v1) {
+                if (v instanceof Data_Maybe.Nothing) {
+                    return new Data_Maybe.Just(v1);
+                };
+                if (v instanceof Data_Maybe.Just) {
+                    return new Data_Maybe.Just((function () {
+                        var $108 = Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1))(Data_Ordering.LT.value);
+                        if ($108) {
+                            return v.value0;
+                        };
+                        return v1;
+                    })());
+                };
+                throw new Error("Failed pattern match at Data.Foldable line 360, column 3 - line 360, column 27: " + [ v.constructor.name, v1.constructor.name ]);
+            };
+        };
+        return foldl(dictFoldable)(min$prime)(Data_Maybe.Nothing.value);
+    };
+};
+var minimum = function (dictOrd) {
+    return function (dictFoldable) {
+        return minimumBy(dictFoldable)(Data_Ord.compare(dictOrd));
+    };
+};
+var product = function (dictFoldable) {
+    return function (dictSemiring) {
+        return foldl(dictFoldable)(Data_Semiring.mul(dictSemiring))(Data_Semiring.one(dictSemiring));
+    };
+};
+var sum = function (dictFoldable) {
+    return function (dictSemiring) {
+        return foldl(dictFoldable)(Data_Semiring.add(dictSemiring))(Data_Semiring.zero(dictSemiring));
+    };
+};
+var foldableMultiplicative = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(v)(z);
+        };
+    };
+});
+var foldableMaybe = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            if (v instanceof Data_Maybe.Nothing) {
+                return Data_Monoid.mempty(dictMonoid);
+            };
+            if (v instanceof Data_Maybe.Just) {
+                return f(v.value0);
+            };
+            throw new Error("Failed pattern match at Data.Foldable line 133, column 3 - line 133, column 30: " + [ f.constructor.name, v.constructor.name ]);
+        };
+    };
+}, function (v) {
+    return function (z) {
+        return function (v1) {
+            if (v1 instanceof Data_Maybe.Nothing) {
+                return z;
+            };
+            if (v1 instanceof Data_Maybe.Just) {
+                return v(z)(v1.value0);
+            };
+            throw new Error("Failed pattern match at Data.Foldable line 131, column 3 - line 131, column 25: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
+        };
+    };
+}, function (v) {
+    return function (z) {
+        return function (v1) {
+            if (v1 instanceof Data_Maybe.Nothing) {
+                return z;
+            };
+            if (v1 instanceof Data_Maybe.Just) {
+                return v(v1.value0)(z);
+            };
+            throw new Error("Failed pattern match at Data.Foldable line 129, column 3 - line 129, column 25: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
+        };
+    };
+});
+var foldableDual = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(v)(z);
+        };
+    };
+});
+var foldableDisj = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(v)(z);
+        };
+    };
+});
+var foldableConj = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(v)(z);
+        };
+    };
+});
+var foldableAdditive = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(v)(z);
+        };
+    };
+});
+var foldMapDefaultR = function (dictFoldable) {
+    return function (dictMonoid) {
+        return function (f) {
+            return foldr(dictFoldable)(function (x) {
+                return function (acc) {
+                    return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);
+                };
+            })(Data_Monoid.mempty(dictMonoid));
+        };
+    };
+};
+var foldableArray = new Foldable(function (dictMonoid) {
+    return foldMapDefaultR(foldableArray)(dictMonoid);
+}, $foreign.foldlArray, $foreign.foldrArray);
+var foldMapDefaultL = function (dictFoldable) {
+    return function (dictMonoid) {
+        return function (f) {
+            return foldl(dictFoldable)(function (acc) {
+                return function (x) {
+                    return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f(x));
+                };
+            })(Data_Monoid.mempty(dictMonoid));
+        };
+    };
+};
+var foldMap = function (dict) {
+    return dict.foldMap;
+};
+var foldableFirst = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return foldMap(foldableMaybe)(dictMonoid)(f)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return foldl(foldableMaybe)(f)(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return foldr(foldableMaybe)(f)(z)(v);
+        };
+    };
+});
+var foldableLast = new Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return foldMap(foldableMaybe)(dictMonoid)(f)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return foldl(foldableMaybe)(f)(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return foldr(foldableMaybe)(f)(z)(v);
+        };
+    };
+});
+var foldlDefault = function (dictFoldable) {
+    return function (c) {
+        return function (u) {
+            return function (xs) {
+                return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(foldMap(dictFoldable)(Data_Monoid_Dual.monoidDual(Data_Monoid_Endo.monoidEndo))(function ($182) {
+                    return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(c)($182)));
+                })(xs)))(u);
+            };
+        };
+    };
+};
+var foldrDefault = function (dictFoldable) {
+    return function (c) {
+        return function (u) {
+            return function (xs) {
+                return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(foldMap(dictFoldable)(Data_Monoid_Endo.monoidEndo)(function ($183) {
+                    return Data_Monoid_Endo.Endo(c($183));
+                })(xs))(u);
+            };
+        };
+    };
+};
+var surroundMap = function (dictFoldable) {
+    return function (dictSemigroup) {
+        return function (d) {
+            return function (t) {
+                return function (f) {
+                    var joined = function (a) {
+                        return function (m) {
+                            return Data_Semigroup.append(dictSemigroup)(d)(Data_Semigroup.append(dictSemigroup)(t(a))(m));
+                        };
+                    };
+                    return Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo)(foldMap(dictFoldable)(Data_Monoid_Endo.monoidEndo)(joined)(f))(d);
+                };
+            };
+        };
+    };
+};
+var surround = function (dictFoldable) {
+    return function (dictSemigroup) {
+        return function (d) {
+            return surroundMap(dictFoldable)(dictSemigroup)(d)(Control_Category.id(Control_Category.categoryFn));
+        };
+    };
+};
+var foldM = function (dictFoldable) {
+    return function (dictMonad) {
+        return function (f) {
+            return function (a0) {
+                return foldl(dictFoldable)(function (ma) {
+                    return function (b) {
+                        return Control_Bind.bind(dictMonad.Bind1())(ma)(Data_Function.flip(f)(b));
+                    };
+                })(Control_Applicative.pure(dictMonad.Applicative0())(a0));
+            };
+        };
+    };
+};
+var fold = function (dictFoldable) {
+    return function (dictMonoid) {
+        return foldMap(dictFoldable)(dictMonoid)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var findMap = function (dictFoldable) {
+    return function (p) {
+        var go = function (v) {
+            return function (v1) {
+                if (v instanceof Data_Maybe.Nothing) {
+                    return p(v1);
+                };
+                return v;
+            };
+        };
+        return foldl(dictFoldable)(go)(Data_Maybe.Nothing.value);
+    };
+};
+var find = function (dictFoldable) {
+    return function (p) {
+        var go = function (v) {
+            return function (v1) {
+                if (v instanceof Data_Maybe.Nothing && p(v1)) {
+                    return new Data_Maybe.Just(v1);
+                };
+                return v;
+            };
+        };
+        return foldl(dictFoldable)(go)(Data_Maybe.Nothing.value);
+    };
+};
+var any = function (dictFoldable) {
+    return function (dictHeytingAlgebra) {
+        return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Monoid_Disj.newtypeDisj)(Data_Monoid_Disj.newtypeDisj)(Data_Monoid_Disj.Disj)(foldMap(dictFoldable)(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));
+    };
+};
+var elem = function (dictFoldable) {
+    return function (dictEq) {
+        return function ($184) {
+            return any(dictFoldable)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Eq.eq(dictEq)($184));
+        };
+    };
+};
+var notElem = function (dictFoldable) {
+    return function (dictEq) {
+        return function (x) {
+            return function ($185) {
+                return !elem(dictFoldable)(dictEq)(x)($185);
+            };
+        };
+    };
+};
+var or = function (dictFoldable) {
+    return function (dictHeytingAlgebra) {
+        return any(dictFoldable)(dictHeytingAlgebra)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var all = function (dictFoldable) {
+    return function (dictHeytingAlgebra) {
+        return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Monoid_Conj.newtypeConj)(Data_Monoid_Conj.newtypeConj)(Data_Monoid_Conj.Conj)(foldMap(dictFoldable)(Data_Monoid_Conj.monoidConj(dictHeytingAlgebra)));
+    };
+};
+var and = function (dictFoldable) {
+    return function (dictHeytingAlgebra) {
+        return all(dictFoldable)(dictHeytingAlgebra)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+module.exports = {
+    Foldable: Foldable, 
+    all: all, 
+    and: and, 
+    any: any, 
+    elem: elem, 
+    find: find, 
+    findMap: findMap, 
+    fold: fold, 
+    foldM: foldM, 
+    foldMap: foldMap, 
+    foldMapDefaultL: foldMapDefaultL, 
+    foldMapDefaultR: foldMapDefaultR, 
+    foldl: foldl, 
+    foldlDefault: foldlDefault, 
+    foldr: foldr, 
+    foldrDefault: foldrDefault, 
+    for_: for_, 
+    intercalate: intercalate, 
+    length: length, 
+    maximum: maximum, 
+    maximumBy: maximumBy, 
+    minimum: minimum, 
+    minimumBy: minimumBy, 
+    notElem: notElem, 
+    "null": $$null, 
+    oneOf: oneOf, 
+    or: or, 
+    product: product, 
+    sequence_: sequence_, 
+    sum: sum, 
+    surround: surround, 
+    surroundMap: surroundMap, 
+    traverse_: traverse_, 
+    foldableArray: foldableArray, 
+    foldableMaybe: foldableMaybe, 
+    foldableFirst: foldableFirst, 
+    foldableLast: foldableLast, 
+    foldableAdditive: foldableAdditive, 
+    foldableDual: foldableDual, 
+    foldableDisj: foldableDisj, 
+    foldableConj: foldableConj, 
+    foldableMultiplicative: foldableMultiplicative
+};
+
+},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Maybe.First":202,"../Data.Maybe.Last":203,"../Data.Monoid":213,"../Data.Monoid.Additive":207,"../Data.Monoid.Conj":208,"../Data.Monoid.Disj":209,"../Data.Monoid.Dual":210,"../Data.Monoid.Endo":211,"../Data.Monoid.Multiplicative":212,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Unit":259,"../Prelude":278,"./foreign":144}],146:[function(require,module,exports){
+"use strict";
+
+exports.toForeign = function (value) {
+  return value;
+};
+
+exports.unsafeFromForeign = function (value) {
+  return value;
+};
+
+exports.typeOf = function (value) {
+  return typeof value;
+};
+
+exports.tagOf = function (value) {
+  return Object.prototype.toString.call(value).slice(8, -1);
+};
+
+exports.isNull = function (value) {
+  return value === null;
+};
+
+exports.isUndefined = function (value) {
+  return value === undefined;
+};
+
+exports.isArray = Array.isArray || function (value) {
+  return Object.prototype.toString.call(value) === "[object Array]";
+};
+
+},{}],147:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Except = require("../Control.Monad.Except");
+var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Identity = require("../Data.Identity");
+var Data_Int = require("../Data.Int");
+var Data_List_NonEmpty = require("../Data.List.NonEmpty");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_String = require("../Data.String");
+var Prelude = require("../Prelude");
+var ForeignError = (function () {
+    function ForeignError(value0) {
+        this.value0 = value0;
+    };
+    ForeignError.create = function (value0) {
+        return new ForeignError(value0);
+    };
+    return ForeignError;
+})();
+var TypeMismatch = (function () {
+    function TypeMismatch(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    TypeMismatch.create = function (value0) {
+        return function (value1) {
+            return new TypeMismatch(value0, value1);
+        };
+    };
+    return TypeMismatch;
+})();
+var ErrorAtIndex = (function () {
+    function ErrorAtIndex(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    ErrorAtIndex.create = function (value0) {
+        return function (value1) {
+            return new ErrorAtIndex(value0, value1);
+        };
+    };
+    return ErrorAtIndex;
+})();
+var ErrorAtProperty = (function () {
+    function ErrorAtProperty(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    ErrorAtProperty.create = function (value0) {
+        return function (value1) {
+            return new ErrorAtProperty(value0, value1);
+        };
+    };
+    return ErrorAtProperty;
+})();
+var JSONError = (function () {
+    function JSONError(value0) {
+        this.value0 = value0;
+    };
+    JSONError.create = function (value0) {
+        return new JSONError(value0);
+    };
+    return JSONError;
+})();
+var showForeignError = new Data_Show.Show(function (v) {
+    if (v instanceof ForeignError) {
+        return "(ForeignError " + (Data_Show.show(Data_Show.showString)(v.value0) + ")");
+    };
+    if (v instanceof ErrorAtIndex) {
+        return "(ErrorAtIndex " + (Data_Show.show(Data_Show.showInt)(v.value0) + (" " + (Data_Show.show(showForeignError)(v.value1) + ")")));
+    };
+    if (v instanceof ErrorAtProperty) {
+        return "(ErrorAtProperty " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(showForeignError)(v.value1) + ")")));
+    };
+    if (v instanceof JSONError) {
+        return "(JSONError " + (Data_Show.show(Data_Show.showString)(v.value0) + ")");
+    };
+    if (v instanceof TypeMismatch) {
+        return "(TypeMismatch " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(Data_Show.showString)(v.value1) + ")")));
+    };
+    throw new Error("Failed pattern match at Data.Foreign line 65, column 3 - line 66, column 3: " + [ v.constructor.name ]);
+});
+var renderForeignError = function (v) {
+    if (v instanceof ForeignError) {
+        return v.value0;
+    };
+    if (v instanceof ErrorAtIndex) {
+        return "Error at array index " + (Data_Show.show(Data_Show.showInt)(v.value0) + (": " + Data_Show.show(showForeignError)(v.value1)));
+    };
+    if (v instanceof ErrorAtProperty) {
+        return "Error at property " + (Data_Show.show(Data_Show.showString)(v.value0) + (": " + Data_Show.show(showForeignError)(v.value1)));
+    };
+    if (v instanceof JSONError) {
+        return "JSON error: " + v.value0;
+    };
+    if (v instanceof TypeMismatch) {
+        return "Type mismatch: expected " + (v.value0 + (", found " + v.value1));
+    };
+    throw new Error("Failed pattern match at Data.Foreign line 75, column 1 - line 75, column 44: " + [ v.constructor.name ]);
+};
+var readUndefined = function (value) {
+    if ($foreign.isUndefined(value)) {
+        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Maybe.Nothing.value);
+    };
+    if (Data_Boolean.otherwise) {
+        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(new Data_Maybe.Just(value));
+    };
+    throw new Error("Failed pattern match at Data.Foreign line 156, column 1 - line 158, column 34: " + [ value.constructor.name ]);
+};
+var readNullOrUndefined = function (value) {
+    if ($foreign.isNull(value) || $foreign.isUndefined(value)) {
+        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Maybe.Nothing.value);
+    };
+    if (Data_Boolean.otherwise) {
+        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(new Data_Maybe.Just(value));
+    };
+    throw new Error("Failed pattern match at Data.Foreign line 161, column 1 - line 163, column 34: " + [ value.constructor.name ]);
+};
+var readNull = function (value) {
+    if ($foreign.isNull(value)) {
+        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Maybe.Nothing.value);
+    };
+    if (Data_Boolean.otherwise) {
+        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(new Data_Maybe.Just(value));
+    };
+    throw new Error("Failed pattern match at Data.Foreign line 151, column 1 - line 153, column 34: " + [ value.constructor.name ]);
+};
+var fail = function ($121) {
+    return Control_Monad_Error_Class.throwError(Control_Monad_Except_Trans.monadThrowExceptT(Data_Identity.monadIdentity))(Data_List_NonEmpty.singleton($121));
+};
+var readArray = function (value) {
+    if ($foreign.isArray(value)) {
+        return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))($foreign.unsafeFromForeign(value));
+    };
+    if (Data_Boolean.otherwise) {
+        return fail(new TypeMismatch("array", $foreign.tagOf(value)));
+    };
+    throw new Error("Failed pattern match at Data.Foreign line 146, column 1 - line 148, column 58: " + [ value.constructor.name ]);
+};
+var unsafeReadTagged = function (tag) {
+    return function (value) {
+        if ($foreign.tagOf(value) === tag) {
+            return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))($foreign.unsafeFromForeign(value));
+        };
+        if (Data_Boolean.otherwise) {
+            return fail(new TypeMismatch(tag, $foreign.tagOf(value)));
+        };
+        throw new Error("Failed pattern match at Data.Foreign line 105, column 1 - line 107, column 54: " + [ tag.constructor.name, value.constructor.name ]);
+    };
+};
+var readBoolean = unsafeReadTagged("Boolean");
+var readNumber = unsafeReadTagged("Number");
+var readInt = function (value) {
+    var error = Data_Either.Left.create(Data_List_NonEmpty.singleton(new TypeMismatch("Int", $foreign.tagOf(value))));
+    var fromNumber = function ($122) {
+        return Data_Maybe.maybe(error)(Control_Applicative.pure(Data_Either.applicativeEither))(Data_Int.fromNumber($122));
+    };
+    return Control_Monad_Except.mapExcept(Data_Either.either(Data_Function["const"](error))(fromNumber))(readNumber(value));
+};
+var readString = unsafeReadTagged("String");
+var readChar = function (value) {
+    var error = Data_Either.Left.create(Data_List_NonEmpty.singleton(new TypeMismatch("Char", $foreign.tagOf(value))));
+    var fromString = function ($123) {
+        return Data_Maybe.maybe(error)(Control_Applicative.pure(Data_Either.applicativeEither))(Data_String.toChar($123));
+    };
+    return Control_Monad_Except.mapExcept(Data_Either.either(Data_Function["const"](error))(fromString))(readString(value));
+};
+var eqForeignError = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        if (x instanceof ForeignError && y instanceof ForeignError) {
+            return x.value0 === y.value0;
+        };
+        if (x instanceof TypeMismatch && y instanceof TypeMismatch) {
+            return x.value0 === y.value0 && x.value1 === y.value1;
+        };
+        if (x instanceof ErrorAtIndex && y instanceof ErrorAtIndex) {
+            return x.value0 === y.value0 && Data_Eq.eq(eqForeignError)(x.value1)(y.value1);
+        };
+        if (x instanceof ErrorAtProperty && y instanceof ErrorAtProperty) {
+            return x.value0 === y.value0 && Data_Eq.eq(eqForeignError)(x.value1)(y.value1);
+        };
+        if (x instanceof JSONError && y instanceof JSONError) {
+            return x.value0 === y.value0;
+        };
+        return false;
+    };
+});
+var ordForeignError = new Data_Ord.Ord(function () {
+    return eqForeignError;
+}, function (x) {
+    return function (y) {
+        if (x instanceof ForeignError && y instanceof ForeignError) {
+            return Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
+        };
+        if (x instanceof ForeignError) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof ForeignError) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof TypeMismatch && y instanceof TypeMismatch) {
+            var v = Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
+            if (v instanceof Data_Ordering.LT) {
+                return Data_Ordering.LT.value;
+            };
+            if (v instanceof Data_Ordering.GT) {
+                return Data_Ordering.GT.value;
+            };
+            return Data_Ord.compare(Data_Ord.ordString)(x.value1)(y.value1);
+        };
+        if (x instanceof TypeMismatch) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof TypeMismatch) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof ErrorAtIndex && y instanceof ErrorAtIndex) {
+            var v = Data_Ord.compare(Data_Ord.ordInt)(x.value0)(y.value0);
+            if (v instanceof Data_Ordering.LT) {
+                return Data_Ordering.LT.value;
+            };
+            if (v instanceof Data_Ordering.GT) {
+                return Data_Ordering.GT.value;
+            };
+            return Data_Ord.compare(ordForeignError)(x.value1)(y.value1);
+        };
+        if (x instanceof ErrorAtIndex) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof ErrorAtIndex) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof ErrorAtProperty && y instanceof ErrorAtProperty) {
+            var v = Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
+            if (v instanceof Data_Ordering.LT) {
+                return Data_Ordering.LT.value;
+            };
+            if (v instanceof Data_Ordering.GT) {
+                return Data_Ordering.GT.value;
+            };
+            return Data_Ord.compare(ordForeignError)(x.value1)(y.value1);
+        };
+        if (x instanceof ErrorAtProperty) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof ErrorAtProperty) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof JSONError && y instanceof JSONError) {
+            return Data_Ord.compare(Data_Ord.ordString)(x.value0)(y.value0);
+        };
+        throw new Error("Failed pattern match: " + [ x.constructor.name, y.constructor.name ]);
+    };
+});
+module.exports = {
+    ForeignError: ForeignError, 
+    TypeMismatch: TypeMismatch, 
+    ErrorAtIndex: ErrorAtIndex, 
+    ErrorAtProperty: ErrorAtProperty, 
+    JSONError: JSONError, 
+    fail: fail, 
+    readArray: readArray, 
+    readBoolean: readBoolean, 
+    readChar: readChar, 
+    readInt: readInt, 
+    readNull: readNull, 
+    readNullOrUndefined: readNullOrUndefined, 
+    readNumber: readNumber, 
+    readString: readString, 
+    readUndefined: readUndefined, 
+    renderForeignError: renderForeignError, 
+    unsafeReadTagged: unsafeReadTagged, 
+    eqForeignError: eqForeignError, 
+    ordForeignError: ordForeignError, 
+    showForeignError: showForeignError, 
+    isArray: $foreign.isArray, 
+    isNull: $foreign.isNull, 
+    isUndefined: $foreign.isUndefined, 
+    tagOf: $foreign.tagOf, 
+    toForeign: $foreign.toForeign, 
+    typeOf: $foreign.typeOf, 
+    unsafeFromForeign: $foreign.unsafeFromForeign
+};
+
+},{"../Control.Applicative":40,"../Control.Monad.Error.Class":72,"../Control.Monad.Except":74,"../Control.Monad.Except.Trans":73,"../Control.Semigroupoid":93,"../Data.Boolean":130,"../Data.Either":138,"../Data.Eq":140,"../Data.Function":151,"../Data.HeytingAlgebra":162,"../Data.Identity":163,"../Data.Int":167,"../Data.List.NonEmpty":198,"../Data.Maybe":204,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Show":241,"../Data.String":249,"../Prelude":278,"./foreign":146}],148:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Generic = require("../Data.Generic");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_String = require("../Data.String");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Global = require("../Global");
+var Prelude = require("../Prelude");
+var FormURLEncoded = function (x) {
+    return x;
+};
+var toArray = function (v) {
+    return v;
+};
+var showFormUrlEncoded = Data_Show.showArray(Data_Tuple.showTuple(Data_Show.showString)(Data_Maybe.showMaybe(Data_Show.showString)));
+var semigroupFormUrlEncoded = Data_Semigroup.semigroupArray;
+var ordFormUrlEncoded = Data_Ord.ordArray(Data_Tuple.ordTuple(Data_Ord.ordString)(Data_Maybe.ordMaybe(Data_Ord.ordString)));
+var newtypeFormUrlEncoded = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, FormURLEncoded);
+var monoidFormUrlEncoded = Data_Monoid.monoidArray;
+var genericFormUrlEncoded = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.FormURLEncoded.FormURLEncoded" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(FormURLEncoded))(Data_Generic.fromSpine(Data_Generic.genericArray(Data_Generic.genericTuple(Data_Generic.genericString)(Data_Generic.genericMaybe(Data_Generic.genericString))))(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.FormURLEncoded.FormURLEncoded", [ {
+        sigConstructor: "Data.FormURLEncoded.FormURLEncoded", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericArray(Data_Generic.genericTuple(Data_Generic.genericString)(Data_Generic.genericMaybe(Data_Generic.genericString))))(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.FormURLEncoded.FormURLEncoded", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericArray(Data_Generic.genericTuple(Data_Generic.genericString)(Data_Generic.genericMaybe(Data_Generic.genericString))))(v);
+    } ]);
+});
+var fromArray = FormURLEncoded;
+var eqFormUrlEncoded = Data_Eq.eqArray(Data_Tuple.eqTuple(Data_Eq.eqString)(Data_Maybe.eqMaybe(Data_Eq.eqString)));
+var encode = (function () {
+    var encodePart = function (v) {
+        if (v.value1 instanceof Data_Maybe.Nothing) {
+            return Global["encodeURIComponent"](v.value0);
+        };
+        if (v.value1 instanceof Data_Maybe.Just) {
+            return Global["encodeURIComponent"](v.value0) + ("=" + Global["encodeURIComponent"](v.value1.value0));
+        };
+        throw new Error("Failed pattern match at Data.FormURLEncoded line 43, column 5 - line 43, column 56: " + [ v.constructor.name ]);
+    };
+    return function ($21) {
+        return Data_String.joinWith("&")(Data_Functor.map(Data_Functor.functorArray)(encodePart)(toArray($21)));
+    };
+})();
+module.exports = {
+    FormURLEncoded: FormURLEncoded, 
+    encode: encode, 
+    fromArray: fromArray, 
+    toArray: toArray, 
+    genericFormUrlEncoded: genericFormUrlEncoded, 
+    newtypeFormUrlEncoded: newtypeFormUrlEncoded, 
+    eqFormUrlEncoded: eqFormUrlEncoded, 
+    ordFormUrlEncoded: ordFormUrlEncoded, 
+    showFormUrlEncoded: showFormUrlEncoded, 
+    semigroupFormUrlEncoded: semigroupFormUrlEncoded, 
+    monoidFormUrlEncoded: monoidFormUrlEncoded
+};
+
+},{"../Control.Apply":42,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Functor":157,"../Data.Generic":159,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Data.String":249,"../Data.Tuple":255,"../Data.Unit":259,"../Global":262,"../Prelude":278}],149:[function(require,module,exports){
+"use strict";
+
+// module Data.Function.Uncurried
+
+exports.mkFn0 = function (fn) {
+  return function () {
+    return fn({});
+  };
+};
+
+exports.mkFn2 = function (fn) {
+  /* jshint maxparams: 2 */
+  return function (a, b) {
+    return fn(a)(b);
+  };
+};
+
+exports.mkFn3 = function (fn) {
+  /* jshint maxparams: 3 */
+  return function (a, b, c) {
+    return fn(a)(b)(c);
+  };
+};
+
+exports.mkFn4 = function (fn) {
+  /* jshint maxparams: 4 */
+  return function (a, b, c, d) {
+    return fn(a)(b)(c)(d);
+  };
+};
+
+exports.mkFn5 = function (fn) {
+  /* jshint maxparams: 5 */
+  return function (a, b, c, d, e) {
+    return fn(a)(b)(c)(d)(e);
+  };
+};
+
+exports.mkFn6 = function (fn) {
+  /* jshint maxparams: 6 */
+  return function (a, b, c, d, e, f) {
+    return fn(a)(b)(c)(d)(e)(f);
+  };
+};
+
+exports.mkFn7 = function (fn) {
+  /* jshint maxparams: 7 */
+  return function (a, b, c, d, e, f, g) {
+    return fn(a)(b)(c)(d)(e)(f)(g);
+  };
+};
+
+exports.mkFn8 = function (fn) {
+  /* jshint maxparams: 8 */
+  return function (a, b, c, d, e, f, g, h) {
+    return fn(a)(b)(c)(d)(e)(f)(g)(h);
+  };
+};
+
+exports.mkFn9 = function (fn) {
+  /* jshint maxparams: 9 */
+  return function (a, b, c, d, e, f, g, h, i) {
+    return fn(a)(b)(c)(d)(e)(f)(g)(h)(i);
+  };
+};
+
+exports.mkFn10 = function (fn) {
+  /* jshint maxparams: 10 */
+  return function (a, b, c, d, e, f, g, h, i, j) {
+    return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j);
+  };
+};
+
+exports.runFn0 = function (fn) {
+  return fn();
+};
+
+exports.runFn2 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return fn(a, b);
+    };
+  };
+};
+
+exports.runFn3 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return fn(a, b, c);
+      };
+    };
+  };
+};
+
+exports.runFn4 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return function (d) {
+          return fn(a, b, c, d);
+        };
+      };
+    };
+  };
+};
+
+exports.runFn5 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return function (d) {
+          return function (e) {
+            return fn(a, b, c, d, e);
+          };
+        };
+      };
+    };
+  };
+};
+
+exports.runFn6 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return function (d) {
+          return function (e) {
+            return function (f) {
+              return fn(a, b, c, d, e, f);
+            };
+          };
+        };
+      };
+    };
+  };
+};
+
+exports.runFn7 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return function (d) {
+          return function (e) {
+            return function (f) {
+              return function (g) {
+                return fn(a, b, c, d, e, f, g);
+              };
+            };
+          };
+        };
+      };
+    };
+  };
+};
+
+exports.runFn8 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return function (d) {
+          return function (e) {
+            return function (f) {
+              return function (g) {
+                return function (h) {
+                  return fn(a, b, c, d, e, f, g, h);
+                };
+              };
+            };
+          };
+        };
+      };
+    };
+  };
+};
+
+exports.runFn9 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return function (d) {
+          return function (e) {
+            return function (f) {
+              return function (g) {
+                return function (h) {
+                  return function (i) {
+                    return fn(a, b, c, d, e, f, g, h, i);
+                  };
+                };
+              };
+            };
+          };
+        };
+      };
+    };
+  };
+};
+
+exports.runFn10 = function (fn) {
+  return function (a) {
+    return function (b) {
+      return function (c) {
+        return function (d) {
+          return function (e) {
+            return function (f) {
+              return function (g) {
+                return function (h) {
+                  return function (i) {
+                    return function (j) {
+                      return fn(a, b, c, d, e, f, g, h, i, j);
+                    };
+                  };
+                };
+              };
+            };
+          };
+        };
+      };
+    };
+  };
+};
+
+},{}],150:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Unit = require("../Data.Unit");
+var runFn1 = function (f) {
+    return f;
+};
+var mkFn1 = function (f) {
+    return f;
+};
+module.exports = {
+    mkFn1: mkFn1, 
+    runFn1: runFn1, 
+    mkFn0: $foreign.mkFn0, 
+    mkFn10: $foreign.mkFn10, 
+    mkFn2: $foreign.mkFn2, 
+    mkFn3: $foreign.mkFn3, 
+    mkFn4: $foreign.mkFn4, 
+    mkFn5: $foreign.mkFn5, 
+    mkFn6: $foreign.mkFn6, 
+    mkFn7: $foreign.mkFn7, 
+    mkFn8: $foreign.mkFn8, 
+    mkFn9: $foreign.mkFn9, 
+    runFn0: $foreign.runFn0, 
+    runFn10: $foreign.runFn10, 
+    runFn2: $foreign.runFn2, 
+    runFn3: $foreign.runFn3, 
+    runFn4: $foreign.runFn4, 
+    runFn5: $foreign.runFn5, 
+    runFn6: $foreign.runFn6, 
+    runFn7: $foreign.runFn7, 
+    runFn8: $foreign.runFn8, 
+    runFn9: $foreign.runFn9
+};
+
+},{"../Data.Unit":259,"./foreign":149}],151:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var on = function (f) {
+    return function (g) {
+        return function (x) {
+            return function (y) {
+                return f(g(x))(g(y));
+            };
+        };
+    };
+};
+var flip = function (f) {
+    return function (b) {
+        return function (a) {
+            return f(a)(b);
+        };
+    };
+};
+var $$const = function (a) {
+    return function (v) {
+        return a;
+    };
+};
+var applyFlipped = function (x) {
+    return function (f) {
+        return f(x);
+    };
+};
+var apply = function (f) {
+    return function (x) {
+        return f(x);
+    };
+};
+module.exports = {
+    apply: apply, 
+    applyFlipped: applyFlipped, 
+    "const": $$const, 
+    flip: flip, 
+    on: on
+};
+
+},{"../Control.Category":47}],152:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad = require("../Control.Monad");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Functor = require("../Data.Functor");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var App = function (x) {
+    return x;
+};
+var traversableApp = function (dictTraversable) {
+    return dictTraversable;
+};
+var showApp = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(App " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semigroupApp = function (dictApply) {
+    return function (dictSemigroup) {
+        return new Data_Semigroup.Semigroup(function (v) {
+            return function (v1) {
+                return Control_Apply.lift2(dictApply)(Data_Semigroup.append(dictSemigroup))(v)(v1);
+            };
+        });
+    };
+};
+var plusApp = function (dictPlus) {
+    return dictPlus;
+};
+var newtypeApp = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, App);
+var monoidApp = function (dictApplicative) {
+    return function (dictMonoid) {
+        return new Data_Monoid.Monoid(function () {
+            return semigroupApp(dictApplicative.Apply0())(dictMonoid.Semigroup0());
+        }, Control_Applicative.pure(dictApplicative)(Data_Monoid.mempty(dictMonoid)));
+    };
+};
+var monadZeroApp = function (dictMonadZero) {
+    return dictMonadZero;
+};
+var monadPlusApp = function (dictMonadPlus) {
+    return dictMonadPlus;
+};
+var monadApp = function (dictMonad) {
+    return dictMonad;
+};
+var lazyApp = function (dictLazy) {
+    return dictLazy;
+};
+var hoistLowerApp = Unsafe_Coerce.unsafeCoerce;
+var hoistLiftApp = Unsafe_Coerce.unsafeCoerce;
+var hoistApp = function (f) {
+    return function (v) {
+        return f(v);
+    };
+};
+var functorApp = function (dictFunctor) {
+    return dictFunctor;
+};
+var foldableApp = function (dictFoldable) {
+    return dictFoldable;
+};
+var extendApp = function (dictExtend) {
+    return dictExtend;
+};
+var eq1App = function (dictEq1) {
+    return new Data_Eq.Eq1(function (dictEq) {
+        return function (v) {
+            return function (v1) {
+                return Data_Eq.eq1(dictEq1)(dictEq)(v)(v1);
+            };
+        };
+    });
+};
+var eqApp = function (dictEq1) {
+    return function (dictEq) {
+        return new Data_Eq.Eq(Data_Eq.eq1(eq1App(dictEq1))(dictEq));
+    };
+};
+var ord1App = function (dictOrd1) {
+    return new Data_Ord.Ord1(function () {
+        return eq1App(dictOrd1.Eq10());
+    }, function (dictOrd) {
+        return function (v) {
+            return function (v1) {
+                return Data_Ord.compare1(dictOrd1)(dictOrd)(v)(v1);
+            };
+        };
+    });
+};
+var ordApp = function (dictOrd1) {
+    return function (dictOrd) {
+        return new Data_Ord.Ord(function () {
+            return eqApp(dictOrd1.Eq10())(dictOrd.Eq0());
+        }, Data_Ord.compare1(ord1App(dictOrd1))(dictOrd));
+    };
+};
+var comonadApp = function (dictComonad) {
+    return dictComonad;
+};
+var bindApp = function (dictBind) {
+    return dictBind;
+};
+var applyApp = function (dictApply) {
+    return dictApply;
+};
+var applicativeApp = function (dictApplicative) {
+    return dictApplicative;
+};
+var alternativeApp = function (dictAlternative) {
+    return dictAlternative;
+};
+var altApp = function (dictAlt) {
+    return dictAlt;
+};
+module.exports = {
+    App: App, 
+    hoistApp: hoistApp, 
+    hoistLiftApp: hoistLiftApp, 
+    hoistLowerApp: hoistLowerApp, 
+    newtypeApp: newtypeApp, 
+    eqApp: eqApp, 
+    eq1App: eq1App, 
+    ordApp: ordApp, 
+    ord1App: ord1App, 
+    showApp: showApp, 
+    semigroupApp: semigroupApp, 
+    monoidApp: monoidApp, 
+    functorApp: functorApp, 
+    applyApp: applyApp, 
+    applicativeApp: applicativeApp, 
+    bindApp: bindApp, 
+    monadApp: monadApp, 
+    altApp: altApp, 
+    plusApp: plusApp, 
+    alternativeApp: alternativeApp, 
+    monadZeroApp: monadZeroApp, 
+    monadPlusApp: monadPlusApp, 
+    lazyApp: lazyApp, 
+    foldableApp: foldableApp, 
+    traversableApp: traversableApp, 
+    extendApp: extendApp, 
+    comonadApp: comonadApp
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Lazy":51,"../Control.Monad":87,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Functor":157,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Traversable":254,"../Prelude":278,"../Unsafe.Coerce":282}],153:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_App = require("../Data.Functor.App");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var Compose = function (x) {
+    return x;
+};
+var showCompose = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Compose " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var newtypeCompose = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Compose);
+var functorCompose = function (dictFunctor) {
+    return function (dictFunctor1) {
+        return new Data_Functor.Functor(function (f) {
+            return function (v) {
+                return Compose(Data_Functor.map(dictFunctor)(Data_Functor.map(dictFunctor1)(f))(v));
+            };
+        });
+    };
+};
+var foldableCompose = function (dictFoldable) {
+    return function (dictFoldable1) {
+        return new Data_Foldable.Foldable(function (dictMonoid) {
+            return function (f) {
+                return function (v) {
+                    return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(Data_Foldable.foldMap(dictFoldable1)(dictMonoid)(f))(v);
+                };
+            };
+        }, function (f) {
+            return function (i) {
+                return function (v) {
+                    return Data_Foldable.foldl(dictFoldable)(Data_Foldable.foldl(dictFoldable1)(f))(i)(v);
+                };
+            };
+        }, function (f) {
+            return function (i) {
+                return function (v) {
+                    return Data_Foldable.foldr(dictFoldable)(Data_Function.flip(Data_Foldable.foldr(dictFoldable1)(f)))(i)(v);
+                };
+            };
+        });
+    };
+};
+var traversableCompose = function (dictTraversable) {
+    return function (dictTraversable1) {
+        return new Data_Traversable.Traversable(function () {
+            return foldableCompose(dictTraversable.Foldable1())(dictTraversable1.Foldable1());
+        }, function () {
+            return functorCompose(dictTraversable.Functor0())(dictTraversable1.Functor0());
+        }, function (dictApplicative) {
+            return Data_Traversable.traverse(traversableCompose(dictTraversable)(dictTraversable1))(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
+        }, function (dictApplicative) {
+            return function (f) {
+                return function (v) {
+                    return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Compose)(Data_Traversable.traverse(dictTraversable)(dictApplicative)(Data_Traversable.traverse(dictTraversable1)(dictApplicative)(f))(v));
+                };
+            };
+        });
+    };
+};
+var eq1Compose = function (dictEq1) {
+    return function (dictEq11) {
+        return new Data_Eq.Eq1(function (dictEq) {
+            return function (v) {
+                return function (v1) {
+                    return Data_Eq.eq1(dictEq1)(Data_Functor_App.eqApp(dictEq11)(dictEq))(Data_Functor_App.hoistLiftApp(v))(Data_Functor_App.hoistLiftApp(v1));
+                };
+            };
+        });
+    };
+};
+var eqCompose = function (dictEq1) {
+    return function (dictEq11) {
+        return function (dictEq) {
+            return new Data_Eq.Eq(Data_Eq.eq1(eq1Compose(dictEq1)(dictEq11))(dictEq));
+        };
+    };
+};
+var ord1Compose = function (dictOrd1) {
+    return function (dictOrd11) {
+        return new Data_Ord.Ord1(function () {
+            return eq1Compose(dictOrd1.Eq10())(dictOrd11.Eq10());
+        }, function (dictOrd) {
+            return function (v) {
+                return function (v1) {
+                    return Data_Ord.compare1(dictOrd1)(Data_Functor_App.ordApp(dictOrd11)(dictOrd))(Data_Functor_App.hoistLiftApp(v))(Data_Functor_App.hoistLiftApp(v1));
+                };
+            };
+        });
+    };
+};
+var ordCompose = function (dictOrd1) {
+    return function (dictOrd11) {
+        return function (dictOrd) {
+            return new Data_Ord.Ord(function () {
+                return eqCompose(dictOrd1.Eq10())(dictOrd11.Eq10())(dictOrd.Eq0());
+            }, Data_Ord.compare1(ord1Compose(dictOrd1)(dictOrd11))(dictOrd));
+        };
+    };
+};
+var bihoistCompose = function (dictFunctor) {
+    return function (natF) {
+        return function (natG) {
+            return function (v) {
+                return natF(Data_Functor.map(dictFunctor)(natG)(v));
+            };
+        };
+    };
+};
+var applyCompose = function (dictApply) {
+    return function (dictApply1) {
+        return new Control_Apply.Apply(function () {
+            return functorCompose(dictApply.Functor0())(dictApply1.Functor0());
+        }, function (v) {
+            return function (v1) {
+                return Compose(Control_Apply.apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Control_Apply.apply(dictApply1))(v))(v1));
+            };
+        });
+    };
+};
+var applicativeCompose = function (dictApplicative) {
+    return function (dictApplicative1) {
+        return new Control_Applicative.Applicative(function () {
+            return applyCompose(dictApplicative.Apply0())(dictApplicative1.Apply0());
+        }, function ($75) {
+            return Compose(Control_Applicative.pure(dictApplicative)(Control_Applicative.pure(dictApplicative1)($75)));
+        });
+    };
+};
+var altCompose = function (dictAlt) {
+    return function (dictFunctor) {
+        return new Control_Alt.Alt(function () {
+            return functorCompose(dictAlt.Functor0())(dictFunctor);
+        }, function (v) {
+            return function (v1) {
+                return Compose(Control_Alt.alt(dictAlt)(v)(v1));
+            };
+        });
+    };
+};
+var plusCompose = function (dictPlus) {
+    return function (dictFunctor) {
+        return new Control_Plus.Plus(function () {
+            return altCompose(dictPlus.Alt0())(dictFunctor);
+        }, Control_Plus.empty(dictPlus));
+    };
+};
+var alternativeCompose = function (dictAlternative) {
+    return function (dictApplicative) {
+        return new Control_Alternative.Alternative(function () {
+            return applicativeCompose(dictAlternative.Applicative0())(dictApplicative);
+        }, function () {
+            return plusCompose(dictAlternative.Plus1())((dictApplicative.Apply0()).Functor0());
+        });
+    };
+};
+module.exports = {
+    Compose: Compose, 
+    bihoistCompose: bihoistCompose, 
+    newtypeCompose: newtypeCompose, 
+    eq1Compose: eq1Compose, 
+    eqCompose: eqCompose, 
+    ord1Compose: ord1Compose, 
+    ordCompose: ordCompose, 
+    showCompose: showCompose, 
+    functorCompose: functorCompose, 
+    applyCompose: applyCompose, 
+    applicativeCompose: applicativeCompose, 
+    foldableCompose: foldableCompose, 
+    traversableCompose: traversableCompose, 
+    altCompose: altCompose, 
+    plusCompose: plusCompose, 
+    alternativeCompose: alternativeCompose
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.App":152,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Traversable":254,"../Prelude":278}],154:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Functor = require("../Data.Functor");
+var Data_Void = require("../Data.Void");
+var Prelude = require("../Prelude");
+var Contravariant = function (cmap) {
+    this.cmap = cmap;
+};
+var cmap = function (dict) {
+    return dict.cmap;
+};
+var cmapFlipped = function (dictContravariant) {
+    return function (x) {
+        return function (f) {
+            return cmap(dictContravariant)(f)(x);
+        };
+    };
+};
+var coerce = function (dictContravariant) {
+    return function (dictFunctor) {
+        return function (a) {
+            return Data_Functor.map(dictFunctor)(Data_Void.absurd)(cmap(dictContravariant)(Data_Void.absurd)(a));
+        };
+    };
+};
+module.exports = {
+    Contravariant: Contravariant, 
+    cmap: cmap, 
+    cmapFlipped: cmapFlipped, 
+    coerce: coerce
+};
+
+},{"../Data.Functor":157,"../Data.Void":260,"../Prelude":278}],155:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Functor = require("../Data.Functor");
+var Invariant = function (imap) {
+    this.imap = imap;
+};
+var imapF = function (dictFunctor) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map(dictFunctor)(f);
+        };
+    };
+};
+var invariantArray = new Invariant(imapF(Data_Functor.functorArray));
+var invariantFn = new Invariant(imapF(Data_Functor.functorFn));
+var imap = function (dict) {
+    return dict.imap;
+};
+module.exports = {
+    Invariant: Invariant, 
+    imap: imap, 
+    imapF: imapF, 
+    invariantFn: invariantFn, 
+    invariantArray: invariantArray
+};
+
+},{"../Data.Functor":157}],156:[function(require,module,exports){
+"use strict";
+
+exports.arrayMap = function (f) {
+  return function (arr) {
+    var l = arr.length;
+    var result = new Array(l);
+    for (var i = 0; i < l; i++) {
+      result[i] = f(arr[i]);
+    }
+    return result;
+  };
+};
+
+},{}],157:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Unit = require("../Data.Unit");
+var Functor = function (map) {
+    this.map = map;
+};
+var map = function (dict) {
+    return dict.map;
+};
+var mapFlipped = function (dictFunctor) {
+    return function (fa) {
+        return function (f) {
+            return map(dictFunctor)(f)(fa);
+        };
+    };
+};
+var $$void = function (dictFunctor) {
+    return map(dictFunctor)(Data_Function["const"](Data_Unit.unit));
+};
+var voidLeft = function (dictFunctor) {
+    return function (f) {
+        return function (x) {
+            return map(dictFunctor)(Data_Function["const"](x))(f);
+        };
+    };
+};
+var voidRight = function (dictFunctor) {
+    return function (x) {
+        return map(dictFunctor)(Data_Function["const"](x));
+    };
+};
+var functorFn = new Functor(Control_Semigroupoid.compose(Control_Semigroupoid.semigroupoidFn));
+var functorArray = new Functor($foreign.arrayMap);
+var flap = function (dictFunctor) {
+    return function (ff) {
+        return function (x) {
+            return map(dictFunctor)(function (f) {
+                return f(x);
+            })(ff);
+        };
+    };
+};
+module.exports = {
+    Functor: Functor, 
+    flap: flap, 
+    map: map, 
+    mapFlipped: mapFlipped, 
+    "void": $$void, 
+    voidLeft: voidLeft, 
+    voidRight: voidRight, 
+    functorFn: functorFn, 
+    functorArray: functorArray
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Unit":259,"./foreign":156}],158:[function(require,module,exports){
+"use strict";
+
+// module Data.Generic
+
+exports.zipAll = function (f) {
+  return function (xs) {
+    return function (ys) {
+      var l = xs.length < ys.length ? xs.length : ys.length;
+      for (var i = 0; i < l; i++) {
+        if (!f(xs[i])(ys[i])) {
+          return false;
+        }
+      }
+      return true;
+    };
+  };
+};
+
+exports.zipCompare = function (f) {
+  return function (xs) {
+    return function (ys) {
+      var i = 0;
+      var xlen = xs.length;
+      var ylen = ys.length;
+      while (i < xlen && i < ylen) {
+        var o = f(xs[i])(ys[i]);
+        if (o !== 0) {
+          return o;
+        }
+        i++;
+      }
+      if (xlen === ylen) {
+        return 0;
+      } else if (xlen > ylen) {
+        return -1;
+      } else {
+        return 1;
+      }
+    };
+  };
+};
+
+},{}],159:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Array = require("../Data.Array");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Identity = require("../Data.Identity");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_NonEmpty = require("../Data.NonEmpty");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_String = require("../Data.String");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Data_Void = require("../Data.Void");
+var Prelude = require("../Prelude");
+var Type_Proxy = require("../Type.Proxy");
+var SProd = (function () {
+    function SProd(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    SProd.create = function (value0) {
+        return function (value1) {
+            return new SProd(value0, value1);
+        };
+    };
+    return SProd;
+})();
+var SRecord = (function () {
+    function SRecord(value0) {
+        this.value0 = value0;
+    };
+    SRecord.create = function (value0) {
+        return new SRecord(value0);
+    };
+    return SRecord;
+})();
+var SNumber = (function () {
+    function SNumber(value0) {
+        this.value0 = value0;
+    };
+    SNumber.create = function (value0) {
+        return new SNumber(value0);
+    };
+    return SNumber;
+})();
+var SBoolean = (function () {
+    function SBoolean(value0) {
+        this.value0 = value0;
+    };
+    SBoolean.create = function (value0) {
+        return new SBoolean(value0);
+    };
+    return SBoolean;
+})();
+var SInt = (function () {
+    function SInt(value0) {
+        this.value0 = value0;
+    };
+    SInt.create = function (value0) {
+        return new SInt(value0);
+    };
+    return SInt;
+})();
+var SString = (function () {
+    function SString(value0) {
+        this.value0 = value0;
+    };
+    SString.create = function (value0) {
+        return new SString(value0);
+    };
+    return SString;
+})();
+var SChar = (function () {
+    function SChar(value0) {
+        this.value0 = value0;
+    };
+    SChar.create = function (value0) {
+        return new SChar(value0);
+    };
+    return SChar;
+})();
+var SArray = (function () {
+    function SArray(value0) {
+        this.value0 = value0;
+    };
+    SArray.create = function (value0) {
+        return new SArray(value0);
+    };
+    return SArray;
+})();
+var SUnit = (function () {
+    function SUnit() {
+
+    };
+    SUnit.value = new SUnit();
+    return SUnit;
+})();
+var SigProd = (function () {
+    function SigProd(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    SigProd.create = function (value0) {
+        return function (value1) {
+            return new SigProd(value0, value1);
+        };
+    };
+    return SigProd;
+})();
+var SigRecord = (function () {
+    function SigRecord(value0) {
+        this.value0 = value0;
+    };
+    SigRecord.create = function (value0) {
+        return new SigRecord(value0);
+    };
+    return SigRecord;
+})();
+var SigNumber = (function () {
+    function SigNumber() {
+
+    };
+    SigNumber.value = new SigNumber();
+    return SigNumber;
+})();
+var SigBoolean = (function () {
+    function SigBoolean() {
+
+    };
+    SigBoolean.value = new SigBoolean();
+    return SigBoolean;
+})();
+var SigInt = (function () {
+    function SigInt() {
+
+    };
+    SigInt.value = new SigInt();
+    return SigInt;
+})();
+var SigString = (function () {
+    function SigString() {
+
+    };
+    SigString.value = new SigString();
+    return SigString;
+})();
+var SigChar = (function () {
+    function SigChar() {
+
+    };
+    SigChar.value = new SigChar();
+    return SigChar;
+})();
+var SigArray = (function () {
+    function SigArray(value0) {
+        this.value0 = value0;
+    };
+    SigArray.create = function (value0) {
+        return new SigArray(value0);
+    };
+    return SigArray;
+})();
+var SigUnit = (function () {
+    function SigUnit() {
+
+    };
+    SigUnit.value = new SigUnit();
+    return SigUnit;
+})();
+var Generic = function (fromSpine, toSignature, toSpine) {
+    this.fromSpine = fromSpine;
+    this.toSignature = toSignature;
+    this.toSpine = toSpine;
+};
+var toSpine = function (dict) {
+    return dict.toSpine;
+};
+var toSignature = function (dict) {
+    return dict.toSignature;
+};
+var showSuspended = function (dictShow) {
+    return function (e) {
+        return "\\_ -> " + Data_Show.show(dictShow)(e(Data_Unit.unit));
+    };
+};
+var showArray = function (v) {
+    return function (v1) {
+        if (v1.length === 0) {
+            return "[]";
+        };
+        return "[ " + (Data_Foldable.intercalate(Data_Foldable.foldableArray)(Data_Monoid.monoidString)(", ")(Data_Functor.map(Data_Functor.functorArray)(v)(v1)) + " ]");
+    };
+};
+var showGenericSpine = new Data_Show.Show(function (v) {
+    if (v instanceof SUnit) {
+        return "SUnit";
+    };
+    if (v instanceof SChar) {
+        return "SChar " + Data_Show.show(Data_Show.showChar)(v.value0);
+    };
+    if (v instanceof SString) {
+        return "SString " + Data_Show.show(Data_Show.showString)(v.value0);
+    };
+    if (v instanceof SBoolean) {
+        return "SBoolean " + Data_Show.show(Data_Show.showBoolean)(v.value0);
+    };
+    if (v instanceof SNumber) {
+        return "SNumber " + Data_Show.show(Data_Show.showNumber)(v.value0);
+    };
+    if (v instanceof SInt) {
+        return "SInt " + Data_Show.show(Data_Show.showInt)(v.value0);
+    };
+    if (v instanceof SArray) {
+        return "SArray " + showArray(showSuspended(showGenericSpine))(v.value0);
+    };
+    if (v instanceof SProd) {
+        return "SProd " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + showArray(showSuspended(showGenericSpine))(v.value1)));
+    };
+    if (v instanceof SRecord) {
+        var showElt = function (v1) {
+            return Data_Foldable.fold(Data_Foldable.foldableArray)(Data_Monoid.monoidString)([ "{ recLabel: ", Data_Show.show(Data_Show.showString)(v1.recLabel), ", recValue: ", showSuspended(showGenericSpine)(v1.recValue), " }" ]);
+        };
+        return "SRecord " + showArray(showElt)(v.value0);
+    };
+    throw new Error("Failed pattern match at Data.Generic line 272, column 9 - line 273, column 9: " + [ v.constructor.name ]);
+});
+var orderingToInt = function (v) {
+    if (v instanceof Data_Ordering.EQ) {
+        return 0;
+    };
+    if (v instanceof Data_Ordering.LT) {
+        return 1;
+    };
+    if (v instanceof Data_Ordering.GT) {
+        return -1 | 0;
+    };
+    throw new Error("Failed pattern match at Data.Generic line 538, column 17 - line 541, column 10: " + [ v.constructor.name ]);
+};
+var genericVoid = new Generic(function (v) {
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return new SigProd("Data.Void.Void", [  ]);
+}, Data_Void.absurd);
+var genericUnit = new Generic(function (v) {
+    if (v instanceof SUnit) {
+        return new Data_Maybe.Just(Data_Unit.unit);
+    };
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return SigUnit.value;
+}, function (v) {
+    return SUnit.value;
+});
+var genericString = new Generic(function (v) {
+    if (v instanceof SString) {
+        return new Data_Maybe.Just(v.value0);
+    };
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return SigString.value;
+}, SString.create);
+var genericOrdering = new Generic(function (v) {
+    if (v instanceof SProd && (v.value0 === "Data.Ordering.LT" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(Data_Ordering.LT.value);
+    };
+    if (v instanceof SProd && (v.value0 === "Data.Ordering.EQ" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(Data_Ordering.EQ.value);
+    };
+    if (v instanceof SProd && (v.value0 === "Data.Ordering.GT" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(Data_Ordering.GT.value);
+    };
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return new SigProd("Data.Ordering.Ordering", [ {
+        sigConstructor: "Data.Ordering.LT", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.Ordering.EQ", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.Ordering.GT", 
+        sigValues: [  ]
+    } ]);
+}, function (v) {
+    if (v instanceof Data_Ordering.LT) {
+        return new SProd("Data.Ordering.LT", [  ]);
+    };
+    if (v instanceof Data_Ordering.EQ) {
+        return new SProd("Data.Ordering.EQ", [  ]);
+    };
+    if (v instanceof Data_Ordering.GT) {
+        return new SProd("Data.Ordering.GT", [  ]);
+    };
+    throw new Error("Failed pattern match at Data.Generic line 218, column 13 - line 221, column 38: " + [ v.constructor.name ]);
+});
+var genericNumber = new Generic(function (v) {
+    if (v instanceof SNumber) {
+        return new Data_Maybe.Just(v.value0);
+    };
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return SigNumber.value;
+}, SNumber.create);
+var genericInt = new Generic(function (v) {
+    if (v instanceof SInt) {
+        return new Data_Maybe.Just(v.value0);
+    };
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return SigInt.value;
+}, SInt.create);
+var genericChar = new Generic(function (v) {
+    if (v instanceof SChar) {
+        return new Data_Maybe.Just(v.value0);
+    };
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return SigChar.value;
+}, SChar.create);
+var genericBool = new Generic(function (v) {
+    if (v instanceof SBoolean) {
+        return new Data_Maybe.Just(v.value0);
+    };
+    return Data_Maybe.Nothing.value;
+}, function (v) {
+    return SigBoolean.value;
+}, SBoolean.create);
+var fromSpine = function (dict) {
+    return dict.fromSpine;
+};
+var force = function (f) {
+    return f(Data_Unit.unit);
+};
+var genericArray = function (dictGeneric) {
+    return new Generic(function (v) {
+        if (v instanceof SArray) {
+            return Data_Traversable.traverse(Data_Traversable.traversableArray)(Data_Maybe.applicativeMaybe)(function ($310) {
+                return fromSpine(dictGeneric)(force($310));
+            })(v.value0);
+        };
+        return Data_Maybe.Nothing.value;
+    }, function (x) {
+        var lowerProxy = function (v) {
+            return Type_Proxy["Proxy"].value;
+        };
+        return new SigArray(function (v) {
+            return toSignature(dictGeneric)(lowerProxy(x));
+        });
+    }, function ($311) {
+        return SArray.create(Data_Functor.map(Data_Functor.functorArray)(function (x) {
+            return function (v) {
+                return toSpine(dictGeneric)(x);
+            };
+        })($311));
+    });
+};
+var genericEither = function (dictGeneric) {
+    return function (dictGeneric1) {
+        return new Generic(function (v) {
+            if (v instanceof SProd && (v.value0 === "Data.Either.Left" && v.value1.length === 1)) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Either.Left.create)(fromSpine(dictGeneric)(force(v["value1"][0])));
+            };
+            if (v instanceof SProd && (v.value0 === "Data.Either.Right" && v.value1.length === 1)) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Either.Right.create)(fromSpine(dictGeneric1)(force(v["value1"][0])));
+            };
+            return Data_Maybe.Nothing.value;
+        }, function (x) {
+            var rproxy = function (v) {
+                return Type_Proxy["Proxy"].value;
+            };
+            var lproxy = function (v) {
+                return Type_Proxy["Proxy"].value;
+            };
+            return new SigProd("Data.Either.Either", [ {
+                sigConstructor: "Data.Either.Left", 
+                sigValues: [ function (v) {
+                    return toSignature(dictGeneric)(lproxy(x));
+                } ]
+            }, {
+                sigConstructor: "Data.Either.Right", 
+                sigValues: [ function (v) {
+                    return toSignature(dictGeneric1)(rproxy(x));
+                } ]
+            } ]);
+        }, function (v) {
+            if (v instanceof Data_Either.Left) {
+                return new SProd("Data.Either.Left", [ function (v1) {
+                    return toSpine(dictGeneric)(v.value0);
+                } ]);
+            };
+            if (v instanceof Data_Either.Right) {
+                return new SProd("Data.Either.Right", [ function (v1) {
+                    return toSpine(dictGeneric1)(v.value0);
+                } ]);
+            };
+            throw new Error("Failed pattern match at Data.Generic line 181, column 3 - line 181, column 64: " + [ v.constructor.name ]);
+        });
+    };
+};
+var genericIdentity = function (dictGeneric) {
+    return new Generic(function (v) {
+        if (v instanceof SProd && (v.value0 === "Data.Identity.Identity" && v.value1.length === 1)) {
+            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Identity.Identity)(fromSpine(dictGeneric)(force(v["value1"][0])));
+        };
+        return Data_Maybe.Nothing.value;
+    }, function (x) {
+        var iproxy = function (v) {
+            return Type_Proxy["Proxy"].value;
+        };
+        return new SigProd("Data.Identity.Identity", [ {
+            sigConstructor: "Data.Identity.Identity", 
+            sigValues: [ function (v) {
+                return toSignature(dictGeneric)(iproxy(x));
+            } ]
+        } ]);
+    }, function (v) {
+        return new SProd("Data.Identity.Identity", [ function (v1) {
+            return toSpine(dictGeneric)(v);
+        } ]);
+    });
+};
+var genericList = function (dictGeneric) {
+    return new Generic(function (v) {
+        if (v instanceof SProd && (v.value0 === "Data.List.Types.Cons" && v.value1.length === 2)) {
+            return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_List_Types.Cons.create)(fromSpine(dictGeneric)(force(v["value1"][0]))))(fromSpine(genericList(dictGeneric))(force(v["value1"][1])));
+        };
+        if (v instanceof SProd && (v.value0 === "Data.List.Types.Nil" && v.value1.length === 0)) {
+            return Control_Applicative.pure(Data_Maybe.applicativeMaybe)(Data_List_Types.Nil.value);
+        };
+        return Data_Maybe.Nothing.value;
+    }, function (x) {
+        var headProxy = function (v) {
+            return Type_Proxy["Proxy"].value;
+        };
+        return new SigProd("Data.List.Types.List", [ {
+            sigConstructor: "Data.List.Types.Cons", 
+            sigValues: [ function (v) {
+                return toSignature(dictGeneric)(headProxy(x));
+            }, function (v) {
+                return toSignature(genericList(dictGeneric))(x);
+            } ]
+        }, {
+            sigConstructor: "Data.List.Types.Nil", 
+            sigValues: [  ]
+        } ]);
+    }, function (v) {
+        if (v instanceof Data_List_Types.Cons) {
+            return new SProd("Data.List.Types.Cons", [ function (v1) {
+                return toSpine(dictGeneric)(v.value0);
+            }, function (v1) {
+                return toSpine(genericList(dictGeneric))(v.value1);
+            } ]);
+        };
+        if (v instanceof Data_List_Types.Nil) {
+            return new SProd("Data.List.Types.Nil", [  ]);
+        };
+        throw new Error("Failed pattern match at Data.Generic line 117, column 3 - line 118, column 68: " + [ v.constructor.name ]);
+    });
+};
+var genericMaybe = function (dictGeneric) {
+    return new Generic(function (v) {
+        if (v instanceof SProd && (v.value0 === "Data.Maybe.Just" && v.value1.length === 1)) {
+            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Maybe.Just.create)(fromSpine(dictGeneric)(force(v["value1"][0])));
+        };
+        if (v instanceof SProd && (v.value0 === "Data.Maybe.Nothing" && v.value1.length === 0)) {
+            return Control_Applicative.pure(Data_Maybe.applicativeMaybe)(Data_Maybe.Nothing.value);
+        };
+        return Data_Maybe.Nothing.value;
+    }, function (x) {
+        var mbProxy = function (v) {
+            return Type_Proxy["Proxy"].value;
+        };
+        return new SigProd("Data.Maybe.Maybe", [ {
+            sigConstructor: "Data.Maybe.Just", 
+            sigValues: [ function (v) {
+                return toSignature(dictGeneric)(mbProxy(x));
+            } ]
+        }, {
+            sigConstructor: "Data.Maybe.Nothing", 
+            sigValues: [  ]
+        } ]);
+    }, function (v) {
+        if (v instanceof Data_Maybe.Just) {
+            return new SProd("Data.Maybe.Just", [ function (v1) {
+                return toSpine(dictGeneric)(v.value0);
+            } ]);
+        };
+        if (v instanceof Data_Maybe.Nothing) {
+            return new SProd("Data.Maybe.Nothing", [  ]);
+        };
+        throw new Error("Failed pattern match at Data.Generic line 161, column 3 - line 161, column 63: " + [ v.constructor.name ]);
+    });
+};
+var genericNonEmpty = function (dictGeneric) {
+    return function (dictGeneric1) {
+        return new Generic(function (v) {
+            if (v instanceof SProd && (v.value0 === "Data.NonEmpty.NonEmpty" && v.value1.length === 2)) {
+                return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_NonEmpty.NonEmpty.create)(fromSpine(dictGeneric1)(force(v["value1"][0]))))(fromSpine(dictGeneric)(force(v["value1"][1])));
+            };
+            return Data_Maybe.Nothing.value;
+        }, function (x) {
+            var tailProxy = function (v) {
+                return Type_Proxy["Proxy"].value;
+            };
+            var headProxy = function (v) {
+                return Type_Proxy["Proxy"].value;
+            };
+            return new SigProd("Data.NonEmpty.NonEmpty", [ {
+                sigConstructor: "Data.NonEmpty.NonEmpty", 
+                sigValues: [ function (v) {
+                    return toSignature(dictGeneric1)(headProxy(x));
+                }, function (v) {
+                    return toSignature(dictGeneric)(tailProxy(x));
+                } ]
+            } ]);
+        }, function (v) {
+            return new SProd("Data.NonEmpty.NonEmpty", [ function (v1) {
+                return toSpine(dictGeneric1)(v.value0);
+            }, function (v1) {
+                return toSpine(dictGeneric)(v.value1);
+            } ]);
+        });
+    };
+};
+var genericNonEmptyList = function (dictGeneric) {
+    return new Generic(function (v) {
+        if (v instanceof SProd && (v.value0 === "Data.List.Types.NonEmptyList" && v.value1.length === 1)) {
+            return Data_Functor.map(Data_Maybe.functorMaybe)(Data_List_Types.NonEmptyList)(fromSpine(genericNonEmpty(genericList(dictGeneric))(dictGeneric))(force(v["value1"][0])));
+        };
+        return Data_Maybe.Nothing.value;
+    }, function (x) {
+        var listProxy = function (v) {
+            return Type_Proxy["Proxy"].value;
+        };
+        return new SigProd("Data.List.Types.NonEmptyList", [ {
+            sigConstructor: "Data.List.Types.NonEmptyList", 
+            sigValues: [ function (v) {
+                return toSignature(genericList(dictGeneric))(listProxy(x));
+            } ]
+        } ]);
+    }, function (v) {
+        return new SProd("Data.List.Types.NonEmptyList", [ function (v1) {
+            return toSpine(genericNonEmpty(genericList(dictGeneric))(dictGeneric))(v);
+        } ]);
+    });
+};
+var genericShowPrec = function (v) {
+    return function (v1) {
+        if (v1 instanceof SProd) {
+            if (Data_Array["null"](v1.value1)) {
+                return v1.value0;
+            };
+            if (Data_Boolean.otherwise) {
+                var showParen = function (v2) {
+                    return function (x) {
+                        if (!v2) {
+                            return x;
+                        };
+                        if (v2) {
+                            return "(" + (x + ")");
+                        };
+                        throw new Error("Failed pattern match at Data.Generic line 467, column 7 - line 467, column 28: " + [ v2.constructor.name, x.constructor.name ]);
+                    };
+                };
+                return showParen(v > 10)(v1.value0 + (" " + Data_String.joinWith(" ")(Data_Functor.map(Data_Functor.functorArray)(function (x) {
+                    return genericShowPrec(11)(force(x));
+                })(v1.value1))));
+            };
+        };
+        if (v1 instanceof SRecord) {
+            var showLabelPart = function (x) {
+                return x.recLabel + (": " + genericShowPrec(0)(force(x.recValue)));
+            };
+            return "{" + (Data_String.joinWith(", ")(Data_Functor.map(Data_Functor.functorArray)(showLabelPart)(v1.value0)) + "}");
+        };
+        if (v1 instanceof SBoolean) {
+            return Data_Show.show(Data_Show.showBoolean)(v1.value0);
+        };
+        if (v1 instanceof SInt) {
+            return Data_Show.show(Data_Show.showInt)(v1.value0);
+        };
+        if (v1 instanceof SNumber) {
+            return Data_Show.show(Data_Show.showNumber)(v1.value0);
+        };
+        if (v1 instanceof SString) {
+            return Data_Show.show(Data_Show.showString)(v1.value0);
+        };
+        if (v1 instanceof SChar) {
+            return Data_Show.show(Data_Show.showChar)(v1.value0);
+        };
+        if (v1 instanceof SArray) {
+            return "[" + (Data_String.joinWith(", ")(Data_Functor.map(Data_Functor.functorArray)(function (x) {
+                return genericShowPrec(0)(force(x));
+            })(v1.value0)) + "]");
+        };
+        if (v1 instanceof SUnit) {
+            return "unit";
+        };
+        throw new Error("Failed pattern match at Data.Generic line 461, column 1 - line 469, column 1: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+};
+var gShow = function (dictGeneric) {
+    return function ($312) {
+        return genericShowPrec(0)(toSpine(dictGeneric)($312));
+    };
+};
+var genericTuple = function (dictGeneric) {
+    return function (dictGeneric1) {
+        return new Generic(function (v) {
+            if (v instanceof SProd && (v.value0 === "Data.Tuple.Tuple" && v.value1.length === 2)) {
+                return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.Tuple.create)(fromSpine(dictGeneric)(force(v["value1"][0]))))(fromSpine(dictGeneric1)(force(v["value1"][1])));
+            };
+            return Data_Maybe.Nothing.value;
+        }, function (x) {
+            var sndProxy = function (v) {
+                return Type_Proxy["Proxy"].value;
+            };
+            var fstProxy = function (v) {
+                return Type_Proxy["Proxy"].value;
+            };
+            return new SigProd("Data.Tuple.Tuple", [ {
+                sigConstructor: "Data.Tuple.Tuple", 
+                sigValues: [ function (v) {
+                    return toSignature(dictGeneric)(fstProxy(x));
+                }, function (v) {
+                    return toSignature(dictGeneric1)(sndProxy(x));
+                } ]
+            } ]);
+        }, function (v) {
+            return new SProd("Data.Tuple.Tuple", [ function (v1) {
+                return toSpine(dictGeneric)(v.value0);
+            }, function (v1) {
+                return toSpine(dictGeneric1)(v.value1);
+            } ]);
+        });
+    };
+};
+var isValidSpine = function (v) {
+    return function (v1) {
+        if (v instanceof SigBoolean && v1 instanceof SBoolean) {
+            return true;
+        };
+        if (v instanceof SigNumber && v1 instanceof SNumber) {
+            return true;
+        };
+        if (v instanceof SigInt && v1 instanceof SInt) {
+            return true;
+        };
+        if (v instanceof SigString && v1 instanceof SString) {
+            return true;
+        };
+        if (v instanceof SigChar && v1 instanceof SChar) {
+            return true;
+        };
+        if (v instanceof SigArray && v1 instanceof SArray) {
+            return Data_Foldable.all(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(function ($313) {
+                return isValidSpine(force(v.value0))(force($313));
+            })(v1.value0);
+        };
+        if (v instanceof SigProd && v1 instanceof SProd) {
+            var v2 = Data_Foldable.find(Data_Foldable.foldableArray)(function (alt) {
+                return alt.sigConstructor === v1.value0;
+            })(v.value1);
+            if (v2 instanceof Data_Maybe.Nothing) {
+                return false;
+            };
+            if (v2 instanceof Data_Maybe.Just) {
+                return Data_Foldable.and(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Array.zipWith(function (sig) {
+                    return function (spine) {
+                        return isValidSpine(force(sig))(force(spine));
+                    };
+                })(v2.value0.sigValues)(v1.value1));
+            };
+            throw new Error("Failed pattern match at Data.Generic line 438, column 3 - line 444, column 15: " + [ v2.constructor.name ]);
+        };
+        if (v instanceof SigRecord && v1 instanceof SRecord) {
+            return Data_Foldable.and(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Array.zipWith(function (sig) {
+                return function (val) {
+                    return isValidSpine(force(sig.recValue))(force(val.recValue));
+                };
+            })(Data_Array.sortBy(function (a) {
+                return function (b) {
+                    return Data_Ord.compare(Data_Ord.ordString)(a.recLabel)(b.recLabel);
+                };
+            })(v.value0))(Data_Array.sortBy(function (a) {
+                return function (b) {
+                    return Data_Ord.compare(Data_Ord.ordString)(a.recLabel)(b.recLabel);
+                };
+            })(v1.value0)));
+        };
+        if (v instanceof SigUnit && v1 instanceof SUnit) {
+            return true;
+        };
+        return false;
+    };
+};
+var showSignature = function (sig) {
+    var needsParen = function (s) {
+        if (s instanceof SigProd) {
+            return true;
+        };
+        if (s instanceof SigRecord) {
+            return true;
+        };
+        if (s instanceof SigNumber) {
+            return false;
+        };
+        if (s instanceof SigBoolean) {
+            return false;
+        };
+        if (s instanceof SigInt) {
+            return false;
+        };
+        if (s instanceof SigString) {
+            return false;
+        };
+        if (s instanceof SigChar) {
+            return false;
+        };
+        if (s instanceof SigArray) {
+            return true;
+        };
+        if (s instanceof SigUnit) {
+            return false;
+        };
+        throw new Error("Failed pattern match at Data.Generic line 403, column 18 - line 412, column 21: " + [ s.constructor.name ]);
+    };
+    var paren = function (s) {
+        if (needsParen(s)) {
+            return "(" + (showSignature(s) + ")");
+        };
+        if (Data_Boolean.otherwise) {
+            return showSignature(s);
+        };
+        throw new Error("Failed pattern match at Data.Generic line 386, column 3 - line 412, column 21: " + [ s.constructor.name ]);
+    };
+    return Data_Foldable.fold(Data_Foldable.foldableArray)(Data_Monoid.monoidString)((function () {
+        if (sig instanceof SigProd) {
+            return [ "SigProd ", Data_Show.show(Data_Show.showString)(sig.value0), " ", showArray(showDataConstructor)(sig.value1) ];
+        };
+        if (sig instanceof SigRecord) {
+            return [ "SigRecord ", showArray(showLabel)(sig.value0) ];
+        };
+        if (sig instanceof SigNumber) {
+            return [ "SigNumber" ];
+        };
+        if (sig instanceof SigBoolean) {
+            return [ "SigBoolean" ];
+        };
+        if (sig instanceof SigInt) {
+            return [ "SigInt" ];
+        };
+        if (sig instanceof SigString) {
+            return [ "SigString" ];
+        };
+        if (sig instanceof SigChar) {
+            return [ "SigChar" ];
+        };
+        if (sig instanceof SigArray) {
+            return [ "SigArray ", paren(force(sig.value0)) ];
+        };
+        if (sig instanceof SigUnit) {
+            return [ "SigUnit" ];
+        };
+        throw new Error("Failed pattern match at Data.Generic line 386, column 10 - line 396, column 27: " + [ sig.constructor.name ]);
+    })());
+};
+var showLabel = function (l) {
+    return "{ recLabel: " + (Data_Show.show(Data_Show.showString)(l.recLabel) + (", recValue: " + (showSignature(force(l.recValue)) + " }")));
+};
+var showDataConstructor = function (dc) {
+    return "{ sigConstructor: " + (Data_Show.show(Data_Show.showString)(dc.sigConstructor) + (", sigValues: " + (showArray(function ($314) {
+        return showSignature(force($314));
+    })(dc.sigValues) + " }")));
+};
+var showGenericSignature = new Data_Show.Show(showSignature);
+var eqThunk = function (dictEq) {
+    return function (x) {
+        return function (y) {
+            return Data_Eq.eq(dictEq)(force(x))(force(y));
+        };
+    };
+};
+var eqRecordSigs = function (dictEq) {
+    return function (arr1) {
+        return function (arr2) {
+            var labelCompare = function (r1) {
+                return function (r2) {
+                    return Data_Ord.compare(Data_Ord.ordString)(r1.recLabel)(r2.recLabel);
+                };
+            };
+            var sorted1 = Data_Array.sortBy(labelCompare)(arr1);
+            var sorted2 = Data_Array.sortBy(labelCompare)(arr2);
+            var doCmp = function (x) {
+                return function (y) {
+                    return x.recLabel === y.recLabel && Data_Eq.eq(dictEq)(force(x.recValue))(force(y.recValue));
+                };
+            };
+            return Data_Array.length(arr1) === Data_Array.length(arr2) && $foreign.zipAll(doCmp)(sorted1)(sorted2);
+        };
+    };
+};
+var eqGenericSpine = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        if (v instanceof SProd && v1 instanceof SProd) {
+            return v.value0 === v1.value0 && (Data_Array.length(v.value1) === Data_Array.length(v1.value1) && $foreign.zipAll(eqThunk(eqGenericSpine))(v.value1)(v1.value1));
+        };
+        if (v instanceof SRecord && v1 instanceof SRecord) {
+            return eqRecordSigs(eqGenericSpine)(v.value0)(v1.value0);
+        };
+        if (v instanceof SNumber && v1 instanceof SNumber) {
+            return v.value0 === v1.value0;
+        };
+        if (v instanceof SBoolean && v1 instanceof SBoolean) {
+            return v.value0 === v1.value0;
+        };
+        if (v instanceof SInt && v1 instanceof SInt) {
+            return v.value0 === v1.value0;
+        };
+        if (v instanceof SString && v1 instanceof SString) {
+            return v.value0 === v1.value0;
+        };
+        if (v instanceof SChar && v1 instanceof SChar) {
+            return v.value0 === v1.value0;
+        };
+        if (v instanceof SArray && v1 instanceof SArray) {
+            return Data_Array.length(v.value0) === Data_Array.length(v1.value0) && $foreign.zipAll(eqThunk(eqGenericSpine))(v.value0)(v1.value0);
+        };
+        if (v instanceof SUnit && v1 instanceof SUnit) {
+            return true;
+        };
+        return false;
+    };
+});
+var gEq = function (dictGeneric) {
+    return function (x) {
+        return function (y) {
+            return Data_Eq.eq(eqGenericSpine)(toSpine(dictGeneric)(x))(toSpine(dictGeneric)(y));
+        };
+    };
+};
+var eqGenericSignature = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        if (v instanceof SigProd && v1 instanceof SigProd) {
+            return v.value0 === v1.value0 && (Data_Array.length(v.value1) === Data_Array.length(v1.value1) && $foreign.zipAll(eqDataConstructor)(v.value1)(v1.value1));
+        };
+        if (v instanceof SigRecord && v1 instanceof SigRecord) {
+            return eqRecordSigs(eqGenericSignature)(v.value0)(v1.value0);
+        };
+        if (v instanceof SigNumber && v1 instanceof SigNumber) {
+            return true;
+        };
+        if (v instanceof SigBoolean && v1 instanceof SigBoolean) {
+            return true;
+        };
+        if (v instanceof SigInt && v1 instanceof SigInt) {
+            return true;
+        };
+        if (v instanceof SigString && v1 instanceof SigString) {
+            return true;
+        };
+        if (v instanceof SigChar && v1 instanceof SigChar) {
+            return true;
+        };
+        if (v instanceof SigArray && v1 instanceof SigArray) {
+            return eqThunk(eqGenericSignature)(v.value0)(v1.value0);
+        };
+        if (v instanceof SigUnit && v1 instanceof SigUnit) {
+            return true;
+        };
+        return false;
+    };
+});
+var eqDataConstructor = function (p1) {
+    return function (p2) {
+        return p1.sigConstructor === p2.sigConstructor && $foreign.zipAll(eqThunk(eqGenericSignature))(p1.sigValues)(p2.sigValues);
+    };
+};
+var compareThunk = function (dictOrd) {
+    return function (x) {
+        return function (y) {
+            return orderingToInt(Data_Ord.compare(dictOrd)(force(x))(force(y)));
+        };
+    };
+};
+var ordGenericSpine = new Data_Ord.Ord(function () {
+    return eqGenericSpine;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof SProd && v1 instanceof SProd) {
+            var v2 = Data_Ord.compare(Data_Ord.ordString)(v.value0)(v1.value0);
+            if (v2 instanceof Data_Ordering.EQ) {
+                return Data_Ord.compare(Data_Ord.ordInt)(0)($foreign.zipCompare(compareThunk(ordGenericSpine))(v.value1)(v1.value1));
+            };
+            return v2;
+        };
+        if (v instanceof SProd) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SProd) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SRecord && v1 instanceof SRecord) {
+            var go = function (x) {
+                return function (y) {
+                    var v2 = Data_Ord.compare(Data_Ord.ordString)(x.recLabel)(y.recLabel);
+                    if (v2 instanceof Data_Ordering.EQ) {
+                        return orderingToInt(Data_Ord.compare(ordGenericSpine)(force(x.recValue))(force(y.recValue)));
+                    };
+                    return orderingToInt(v2);
+                };
+            };
+            return Data_Ord.compare(Data_Ord.ordInt)(0)($foreign.zipCompare(go)(v.value0)(v1.value0));
+        };
+        if (v instanceof SRecord) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SRecord) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SInt && v1 instanceof SInt) {
+            return Data_Ord.compare(Data_Ord.ordInt)(v.value0)(v1.value0);
+        };
+        if (v instanceof SInt) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SInt) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SBoolean && v1 instanceof SBoolean) {
+            return Data_Ord.compare(Data_Ord.ordBoolean)(v.value0)(v1.value0);
+        };
+        if (v instanceof SBoolean) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SBoolean) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SNumber && v1 instanceof SNumber) {
+            return Data_Ord.compare(Data_Ord.ordNumber)(v.value0)(v1.value0);
+        };
+        if (v instanceof SNumber) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SNumber) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SString && v1 instanceof SString) {
+            return Data_Ord.compare(Data_Ord.ordString)(v.value0)(v1.value0);
+        };
+        if (v instanceof SString) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SString) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SChar && v1 instanceof SChar) {
+            return Data_Ord.compare(Data_Ord.ordChar)(v.value0)(v1.value0);
+        };
+        if (v instanceof SChar) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SChar) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SArray && v1 instanceof SArray) {
+            return Data_Ord.compare(Data_Ord.ordInt)(0)($foreign.zipCompare(compareThunk(ordGenericSpine))(v.value0)(v1.value0));
+        };
+        if (v instanceof SArray) {
+            return Data_Ordering.LT.value;
+        };
+        if (v1 instanceof SArray) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof SUnit && v1 instanceof SUnit) {
+            return Data_Ordering.EQ.value;
+        };
+        throw new Error("Failed pattern match at Data.Generic line 304, column 3 - line 307, column 15: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var gCompare = function (dictGeneric) {
+    return function (x) {
+        return function (y) {
+            return Data_Ord.compare(ordGenericSpine)(toSpine(dictGeneric)(x))(toSpine(dictGeneric)(y));
+        };
+    };
+};
+module.exports = {
+    SigProd: SigProd, 
+    SigRecord: SigRecord, 
+    SigNumber: SigNumber, 
+    SigBoolean: SigBoolean, 
+    SigInt: SigInt, 
+    SigString: SigString, 
+    SigChar: SigChar, 
+    SigArray: SigArray, 
+    SigUnit: SigUnit, 
+    SProd: SProd, 
+    SRecord: SRecord, 
+    SNumber: SNumber, 
+    SBoolean: SBoolean, 
+    SInt: SInt, 
+    SString: SString, 
+    SChar: SChar, 
+    SArray: SArray, 
+    SUnit: SUnit, 
+    Generic: Generic, 
+    fromSpine: fromSpine, 
+    gCompare: gCompare, 
+    gEq: gEq, 
+    gShow: gShow, 
+    isValidSpine: isValidSpine, 
+    showDataConstructor: showDataConstructor, 
+    showSignature: showSignature, 
+    toSignature: toSignature, 
+    toSpine: toSpine, 
+    genericNumber: genericNumber, 
+    genericInt: genericInt, 
+    genericString: genericString, 
+    genericChar: genericChar, 
+    genericBool: genericBool, 
+    genericArray: genericArray, 
+    genericUnit: genericUnit, 
+    genericVoid: genericVoid, 
+    genericTuple: genericTuple, 
+    genericList: genericList, 
+    genericNonEmptyList: genericNonEmptyList, 
+    genericMaybe: genericMaybe, 
+    genericEither: genericEither, 
+    genericIdentity: genericIdentity, 
+    genericOrdering: genericOrdering, 
+    genericNonEmpty: genericNonEmpty, 
+    showGenericSpine: showGenericSpine, 
+    eqGenericSpine: eqGenericSpine, 
+    ordGenericSpine: ordGenericSpine, 
+    eqGenericSignature: eqGenericSignature, 
+    showGenericSignature: showGenericSignature
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Semigroupoid":93,"../Data.Array":120,"../Data.Boolean":130,"../Data.Either":138,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Identity":163,"../Data.List.Types":199,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.NonEmpty":216,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Show":241,"../Data.String":249,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unit":259,"../Data.Void":260,"../Prelude":278,"../Type.Proxy":280,"./foreign":158}],160:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Generic = require("../Data.Generic");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_String = require("../Data.String");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var OPTIONS = (function () {
+    function OPTIONS() {
+
+    };
+    OPTIONS.value = new OPTIONS();
+    return OPTIONS;
+})();
+var GET = (function () {
+    function GET() {
+
+    };
+    GET.value = new GET();
+    return GET;
+})();
+var HEAD = (function () {
+    function HEAD() {
+
+    };
+    HEAD.value = new HEAD();
+    return HEAD;
+})();
+var POST = (function () {
+    function POST() {
+
+    };
+    POST.value = new POST();
+    return POST;
+})();
+var PUT = (function () {
+    function PUT() {
+
+    };
+    PUT.value = new PUT();
+    return PUT;
+})();
+var DELETE = (function () {
+    function DELETE() {
+
+    };
+    DELETE.value = new DELETE();
+    return DELETE;
+})();
+var TRACE = (function () {
+    function TRACE() {
+
+    };
+    TRACE.value = new TRACE();
+    return TRACE;
+})();
+var CONNECT = (function () {
+    function CONNECT() {
+
+    };
+    CONNECT.value = new CONNECT();
+    return CONNECT;
+})();
+var PROPFIND = (function () {
+    function PROPFIND() {
+
+    };
+    PROPFIND.value = new PROPFIND();
+    return PROPFIND;
+})();
+var PROPPATCH = (function () {
+    function PROPPATCH() {
+
+    };
+    PROPPATCH.value = new PROPPATCH();
+    return PROPPATCH;
+})();
+var MKCOL = (function () {
+    function MKCOL() {
+
+    };
+    MKCOL.value = new MKCOL();
+    return MKCOL;
+})();
+var COPY = (function () {
+    function COPY() {
+
+    };
+    COPY.value = new COPY();
+    return COPY;
+})();
+var MOVE = (function () {
+    function MOVE() {
+
+    };
+    MOVE.value = new MOVE();
+    return MOVE;
+})();
+var LOCK = (function () {
+    function LOCK() {
+
+    };
+    LOCK.value = new LOCK();
+    return LOCK;
+})();
+var UNLOCK = (function () {
+    function UNLOCK() {
+
+    };
+    UNLOCK.value = new UNLOCK();
+    return UNLOCK;
+})();
+var PATCH = (function () {
+    function PATCH() {
+
+    };
+    PATCH.value = new PATCH();
+    return PATCH;
+})();
+var CustomMethod = function (x) {
+    return x;
+};
+var unCustomMethod = function (v) {
+    return v;
+};
+var showMethod = new Data_Show.Show(function (v) {
+    if (v instanceof OPTIONS) {
+        return "OPTIONS";
+    };
+    if (v instanceof GET) {
+        return "GET";
+    };
+    if (v instanceof HEAD) {
+        return "HEAD";
+    };
+    if (v instanceof POST) {
+        return "POST";
+    };
+    if (v instanceof PUT) {
+        return "PUT";
+    };
+    if (v instanceof DELETE) {
+        return "DELETE";
+    };
+    if (v instanceof TRACE) {
+        return "TRACE";
+    };
+    if (v instanceof CONNECT) {
+        return "CONNECT";
+    };
+    if (v instanceof PROPFIND) {
+        return "PROPFIND";
+    };
+    if (v instanceof PROPPATCH) {
+        return "PROPPATCH";
+    };
+    if (v instanceof MKCOL) {
+        return "MKCOL";
+    };
+    if (v instanceof COPY) {
+        return "COPY";
+    };
+    if (v instanceof MOVE) {
+        return "MOVE";
+    };
+    if (v instanceof LOCK) {
+        return "LOCK";
+    };
+    if (v instanceof UNLOCK) {
+        return "UNLOCK";
+    };
+    if (v instanceof PATCH) {
+        return "PATCH";
+    };
+    throw new Error("Failed pattern match at Data.HTTP.Method line 43, column 3 - line 44, column 3: " + [ v.constructor.name ]);
+});
+var showCustomMethod = new Data_Show.Show(function (v) {
+    return "(CustomMethod " + (Data_Show.show(Data_Show.showString)(v) + ")");
+});
+var print = Data_Either.either(Data_Show.show(showMethod))(unCustomMethod);
+var genericMethod = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.OPTIONS" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(OPTIONS.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.GET" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(GET.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.HEAD" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(HEAD.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.POST" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(POST.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PUT" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(PUT.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.DELETE" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(DELETE.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.TRACE" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(TRACE.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.CONNECT" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(CONNECT.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PROPFIND" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(PROPFIND.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PROPPATCH" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(PROPPATCH.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.MKCOL" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(MKCOL.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.COPY" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(COPY.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.MOVE" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(MOVE.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.LOCK" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(LOCK.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.UNLOCK" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(UNLOCK.value);
+    };
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.PATCH" && v.value1.length === 0)) {
+        return new Data_Maybe.Just(PATCH.value);
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.HTTP.Method.Method", [ {
+        sigConstructor: "Data.HTTP.Method.OPTIONS", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.GET", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.HEAD", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.POST", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.PUT", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.DELETE", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.TRACE", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.CONNECT", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.PROPFIND", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.PROPPATCH", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.MKCOL", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.COPY", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.MOVE", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.LOCK", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.UNLOCK", 
+        sigValues: [  ]
+    }, {
+        sigConstructor: "Data.HTTP.Method.PATCH", 
+        sigValues: [  ]
+    } ]);
+}, function (v) {
+    if (v instanceof OPTIONS) {
+        return new Data_Generic.SProd("Data.HTTP.Method.OPTIONS", [  ]);
+    };
+    if (v instanceof GET) {
+        return new Data_Generic.SProd("Data.HTTP.Method.GET", [  ]);
+    };
+    if (v instanceof HEAD) {
+        return new Data_Generic.SProd("Data.HTTP.Method.HEAD", [  ]);
+    };
+    if (v instanceof POST) {
+        return new Data_Generic.SProd("Data.HTTP.Method.POST", [  ]);
+    };
+    if (v instanceof PUT) {
+        return new Data_Generic.SProd("Data.HTTP.Method.PUT", [  ]);
+    };
+    if (v instanceof DELETE) {
+        return new Data_Generic.SProd("Data.HTTP.Method.DELETE", [  ]);
+    };
+    if (v instanceof TRACE) {
+        return new Data_Generic.SProd("Data.HTTP.Method.TRACE", [  ]);
+    };
+    if (v instanceof CONNECT) {
+        return new Data_Generic.SProd("Data.HTTP.Method.CONNECT", [  ]);
+    };
+    if (v instanceof PROPFIND) {
+        return new Data_Generic.SProd("Data.HTTP.Method.PROPFIND", [  ]);
+    };
+    if (v instanceof PROPPATCH) {
+        return new Data_Generic.SProd("Data.HTTP.Method.PROPPATCH", [  ]);
+    };
+    if (v instanceof MKCOL) {
+        return new Data_Generic.SProd("Data.HTTP.Method.MKCOL", [  ]);
+    };
+    if (v instanceof COPY) {
+        return new Data_Generic.SProd("Data.HTTP.Method.COPY", [  ]);
+    };
+    if (v instanceof MOVE) {
+        return new Data_Generic.SProd("Data.HTTP.Method.MOVE", [  ]);
+    };
+    if (v instanceof LOCK) {
+        return new Data_Generic.SProd("Data.HTTP.Method.LOCK", [  ]);
+    };
+    if (v instanceof UNLOCK) {
+        return new Data_Generic.SProd("Data.HTTP.Method.UNLOCK", [  ]);
+    };
+    if (v instanceof PATCH) {
+        return new Data_Generic.SProd("Data.HTTP.Method.PATCH", [  ]);
+    };
+    throw new Error("Failed pattern match at Data.HTTP.Method line 40, column 1 - line 40, column 48: " + [ v.constructor.name ]);
+});
+var genericCustomMethod = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.HTTP.Method.CustomMethod" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(CustomMethod))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.HTTP.Method.CustomMethod", [ {
+        sigConstructor: "Data.HTTP.Method.CustomMethod", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.HTTP.Method.CustomMethod", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericString)(v);
+    } ]);
+});
+var fromString = function (s) {
+    var v = Data_String.toUpper(s);
+    if (v === "OPTIONS") {
+        return new Data_Either.Left(OPTIONS.value);
+    };
+    if (v === "GET") {
+        return new Data_Either.Left(GET.value);
+    };
+    if (v === "HEAD") {
+        return new Data_Either.Left(HEAD.value);
+    };
+    if (v === "POST") {
+        return new Data_Either.Left(POST.value);
+    };
+    if (v === "PUT") {
+        return new Data_Either.Left(PUT.value);
+    };
+    if (v === "DELETE") {
+        return new Data_Either.Left(DELETE.value);
+    };
+    if (v === "TRACE") {
+        return new Data_Either.Left(TRACE.value);
+    };
+    if (v === "CONNECT") {
+        return new Data_Either.Left(CONNECT.value);
+    };
+    if (v === "PROPFIND") {
+        return new Data_Either.Left(PROPFIND.value);
+    };
+    if (v === "PROPPATCH") {
+        return new Data_Either.Left(PROPPATCH.value);
+    };
+    if (v === "MKCOL") {
+        return new Data_Either.Left(MKCOL.value);
+    };
+    if (v === "COPY") {
+        return new Data_Either.Left(COPY.value);
+    };
+    if (v === "MOVE") {
+        return new Data_Either.Left(MOVE.value);
+    };
+    if (v === "LOCK") {
+        return new Data_Either.Left(LOCK.value);
+    };
+    if (v === "UNLOCK") {
+        return new Data_Either.Left(UNLOCK.value);
+    };
+    return new Data_Either.Right(v);
+};
+var eqMethod = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        if (x instanceof OPTIONS && y instanceof OPTIONS) {
+            return true;
+        };
+        if (x instanceof GET && y instanceof GET) {
+            return true;
+        };
+        if (x instanceof HEAD && y instanceof HEAD) {
+            return true;
+        };
+        if (x instanceof POST && y instanceof POST) {
+            return true;
+        };
+        if (x instanceof PUT && y instanceof PUT) {
+            return true;
+        };
+        if (x instanceof DELETE && y instanceof DELETE) {
+            return true;
+        };
+        if (x instanceof TRACE && y instanceof TRACE) {
+            return true;
+        };
+        if (x instanceof CONNECT && y instanceof CONNECT) {
+            return true;
+        };
+        if (x instanceof PROPFIND && y instanceof PROPFIND) {
+            return true;
+        };
+        if (x instanceof PROPPATCH && y instanceof PROPPATCH) {
+            return true;
+        };
+        if (x instanceof MKCOL && y instanceof MKCOL) {
+            return true;
+        };
+        if (x instanceof COPY && y instanceof COPY) {
+            return true;
+        };
+        if (x instanceof MOVE && y instanceof MOVE) {
+            return true;
+        };
+        if (x instanceof LOCK && y instanceof LOCK) {
+            return true;
+        };
+        if (x instanceof UNLOCK && y instanceof UNLOCK) {
+            return true;
+        };
+        if (x instanceof PATCH && y instanceof PATCH) {
+            return true;
+        };
+        return false;
+    };
+});
+var ordMethod = new Data_Ord.Ord(function () {
+    return eqMethod;
+}, function (x) {
+    return function (y) {
+        if (x instanceof OPTIONS && y instanceof OPTIONS) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof OPTIONS) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof OPTIONS) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof GET && y instanceof GET) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof GET) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof GET) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof HEAD && y instanceof HEAD) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof HEAD) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof HEAD) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof POST && y instanceof POST) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof POST) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof POST) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof PUT && y instanceof PUT) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof PUT) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof PUT) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof DELETE && y instanceof DELETE) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof DELETE) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof DELETE) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof TRACE && y instanceof TRACE) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof TRACE) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof TRACE) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof CONNECT && y instanceof CONNECT) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof CONNECT) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof CONNECT) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof PROPFIND && y instanceof PROPFIND) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof PROPFIND) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof PROPFIND) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof PROPPATCH && y instanceof PROPPATCH) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof PROPPATCH) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof PROPPATCH) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof MKCOL && y instanceof MKCOL) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof MKCOL) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof MKCOL) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof COPY && y instanceof COPY) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof COPY) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof COPY) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof MOVE && y instanceof MOVE) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof MOVE) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof MOVE) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof LOCK && y instanceof LOCK) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof LOCK) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof LOCK) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof UNLOCK && y instanceof UNLOCK) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof UNLOCK) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof UNLOCK) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof PATCH && y instanceof PATCH) {
+            return Data_Ordering.EQ.value;
+        };
+        throw new Error("Failed pattern match at Data.HTTP.Method line 39, column 1 - line 39, column 40: " + [ x.constructor.name, y.constructor.name ]);
+    };
+});
+var eqCustomMethod = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        return x === y;
+    };
+});
+var ordCustomMethod = new Data_Ord.Ord(function () {
+    return eqCustomMethod;
+}, function (x) {
+    return function (y) {
+        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
+    };
+});
+module.exports = {
+    OPTIONS: OPTIONS, 
+    GET: GET, 
+    HEAD: HEAD, 
+    POST: POST, 
+    PUT: PUT, 
+    DELETE: DELETE, 
+    TRACE: TRACE, 
+    CONNECT: CONNECT, 
+    PROPFIND: PROPFIND, 
+    PROPPATCH: PROPPATCH, 
+    MKCOL: MKCOL, 
+    COPY: COPY, 
+    MOVE: MOVE, 
+    LOCK: LOCK, 
+    UNLOCK: UNLOCK, 
+    PATCH: PATCH, 
+    fromString: fromString, 
+    print: print, 
+    unCustomMethod: unCustomMethod, 
+    eqMethod: eqMethod, 
+    ordMethod: ordMethod, 
+    genericMethod: genericMethod, 
+    showMethod: showMethod, 
+    eqCustomMethod: eqCustomMethod, 
+    ordCustomMethod: ordCustomMethod, 
+    genericCustomMethod: genericCustomMethod, 
+    showCustomMethod: showCustomMethod
+};
+
+},{"../Control.Apply":42,"../Data.Either":138,"../Data.Eq":140,"../Data.Generic":159,"../Data.Maybe":204,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Show":241,"../Data.String":249,"../Data.Unit":259,"../Prelude":278}],161:[function(require,module,exports){
+"use strict";
+
+exports.boolConj = function (b1) {
+  return function (b2) {
+    return b1 && b2;
+  };
+};
+
+exports.boolDisj = function (b1) {
+  return function (b2) {
+    return b1 || b2;
+  };
+};
+
+exports.boolNot = function (b) {
+  return !b;
+};
+
+},{}],162:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Unit = require("../Data.Unit");
+var HeytingAlgebra = function (conj, disj, ff, implies, not, tt) {
+    this.conj = conj;
+    this.disj = disj;
+    this.ff = ff;
+    this.implies = implies;
+    this.not = not;
+    this.tt = tt;
+};
+var tt = function (dict) {
+    return dict.tt;
+};
+var not = function (dict) {
+    return dict.not;
+};
+var implies = function (dict) {
+    return dict.implies;
+};
+var heytingAlgebraUnit = new HeytingAlgebra(function (v) {
+    return function (v1) {
+        return Data_Unit.unit;
+    };
+}, function (v) {
+    return function (v1) {
+        return Data_Unit.unit;
+    };
+}, Data_Unit.unit, function (v) {
+    return function (v1) {
+        return Data_Unit.unit;
+    };
+}, function (v) {
+    return Data_Unit.unit;
+}, Data_Unit.unit);
+var ff = function (dict) {
+    return dict.ff;
+};
+var disj = function (dict) {
+    return dict.disj;
+};
+var heytingAlgebraBoolean = new HeytingAlgebra($foreign.boolConj, $foreign.boolDisj, false, function (a) {
+    return function (b) {
+        return disj(heytingAlgebraBoolean)(not(heytingAlgebraBoolean)(a))(b);
+    };
+}, $foreign.boolNot, true);
+var conj = function (dict) {
+    return dict.conj;
+};
+var heytingAlgebraFunction = function (dictHeytingAlgebra) {
+    return new HeytingAlgebra(function (f) {
+        return function (g) {
+            return function (a) {
+                return conj(dictHeytingAlgebra)(f(a))(g(a));
+            };
+        };
+    }, function (f) {
+        return function (g) {
+            return function (a) {
+                return disj(dictHeytingAlgebra)(f(a))(g(a));
+            };
+        };
+    }, function (v) {
+        return ff(dictHeytingAlgebra);
+    }, function (f) {
+        return function (g) {
+            return function (a) {
+                return implies(dictHeytingAlgebra)(f(a))(g(a));
+            };
+        };
+    }, function (f) {
+        return function (a) {
+            return not(dictHeytingAlgebra)(f(a));
+        };
+    }, function (v) {
+        return tt(dictHeytingAlgebra);
+    });
+};
+module.exports = {
+    HeytingAlgebra: HeytingAlgebra, 
+    conj: conj, 
+    disj: disj, 
+    ff: ff, 
+    implies: implies, 
+    not: not, 
+    tt: tt, 
+    heytingAlgebraBoolean: heytingAlgebraBoolean, 
+    heytingAlgebraUnit: heytingAlgebraUnit, 
+    heytingAlgebraFunction: heytingAlgebraFunction
+};
+
+},{"../Data.Unit":259,"./foreign":161}],163:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad = require("../Control.Monad");
+var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
+var Data_Bounded = require("../Data.Bounded");
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_Eq = require("../Data.Eq");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Field = require("../Data.Field");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var Identity = function (x) {
+    return x;
+};
+var showIdentity = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Identity " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semiringIdentity = function (dictSemiring) {
+    return dictSemiring;
+};
+var semigroupIdenity = function (dictSemigroup) {
+    return dictSemigroup;
+};
+var ringIdentity = function (dictRing) {
+    return dictRing;
+};
+var ordIdentity = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeIdentity = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Identity);
+var monoidIdentity = function (dictMonoid) {
+    return dictMonoid;
+};
+var lazyIdentity = function (dictLazy) {
+    return dictLazy;
+};
+var heytingAlgebraIdentity = function (dictHeytingAlgebra) {
+    return dictHeytingAlgebra;
+};
+var functorIdentity = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return f(v);
+    };
+});
+var invariantIdentity = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorIdentity));
+var foldableIdentity = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(z)(v);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(v)(z);
+        };
+    };
+});
+var traversableIdentity = new Data_Traversable.Traversable(function () {
+    return foldableIdentity;
+}, function () {
+    return functorIdentity;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Identity)(v);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Identity)(f(v));
+        };
+    };
+});
+var fieldIdentity = function (dictField) {
+    return dictField;
+};
+var extendIdentity = new Control_Extend.Extend(function () {
+    return functorIdentity;
+}, function (f) {
+    return function (m) {
+        return f(m);
+    };
+});
+var euclideanRingIdentity = function (dictEuclideanRing) {
+    return dictEuclideanRing;
+};
+var eqIdentity = function (dictEq) {
+    return dictEq;
+};
+var eq1Identity = new Data_Eq.Eq1(function (dictEq) {
+    return Data_Eq.eq(eqIdentity(dictEq));
+});
+var ord1Identity = new Data_Ord.Ord1(function () {
+    return eq1Identity;
+}, function (dictOrd) {
+    return Data_Ord.compare(ordIdentity(dictOrd));
+});
+var comonadIdentity = new Control_Comonad.Comonad(function () {
+    return extendIdentity;
+}, function (v) {
+    return v;
+});
+var commutativeRingIdentity = function (dictCommutativeRing) {
+    return dictCommutativeRing;
+};
+var boundedIdentity = function (dictBounded) {
+    return dictBounded;
+};
+var booleanAlgebraIdentity = function (dictBooleanAlgebra) {
+    return dictBooleanAlgebra;
+};
+var applyIdentity = new Control_Apply.Apply(function () {
+    return functorIdentity;
+}, function (v) {
+    return function (v1) {
+        return v(v1);
+    };
+});
+var bindIdentity = new Control_Bind.Bind(function () {
+    return applyIdentity;
+}, function (v) {
+    return function (f) {
+        return f(v);
+    };
+});
+var applicativeIdentity = new Control_Applicative.Applicative(function () {
+    return applyIdentity;
+}, Identity);
+var monadIdentity = new Control_Monad.Monad(function () {
+    return applicativeIdentity;
+}, function () {
+    return bindIdentity;
+});
+var altIdentity = new Control_Alt.Alt(function () {
+    return functorIdentity;
+}, function (x) {
+    return function (v) {
+        return x;
+    };
+});
+module.exports = {
+    Identity: Identity, 
+    newtypeIdentity: newtypeIdentity, 
+    eqIdentity: eqIdentity, 
+    ordIdentity: ordIdentity, 
+    boundedIdentity: boundedIdentity, 
+    heytingAlgebraIdentity: heytingAlgebraIdentity, 
+    booleanAlgebraIdentity: booleanAlgebraIdentity, 
+    semigroupIdenity: semigroupIdenity, 
+    monoidIdentity: monoidIdentity, 
+    semiringIdentity: semiringIdentity, 
+    euclideanRingIdentity: euclideanRingIdentity, 
+    ringIdentity: ringIdentity, 
+    commutativeRingIdentity: commutativeRingIdentity, 
+    fieldIdentity: fieldIdentity, 
+    lazyIdentity: lazyIdentity, 
+    showIdentity: showIdentity, 
+    eq1Identity: eq1Identity, 
+    ord1Identity: ord1Identity, 
+    functorIdentity: functorIdentity, 
+    invariantIdentity: invariantIdentity, 
+    altIdentity: altIdentity, 
+    applyIdentity: applyIdentity, 
+    applicativeIdentity: applicativeIdentity, 
+    bindIdentity: bindIdentity, 
+    monadIdentity: monadIdentity, 
+    extendIdentity: extendIdentity, 
+    comonadIdentity: comonadIdentity, 
+    foldableIdentity: foldableIdentity, 
+    traversableIdentity: traversableIdentity
+};
+
+},{"../Control.Alt":38,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Lazy":51,"../Control.Monad":87,"../Data.BooleanAlgebra":131,"../Data.Bounded":133,"../Data.CommutativeRing":134,"../Data.Eq":140,"../Data.EuclideanRing":142,"../Data.Field":143,"../Data.Foldable":145,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.HeytingAlgebra":162,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Traversable":254,"../Prelude":278}],164:[function(require,module,exports){
+"use strict";
+
+// module Data.Int.Bits
+
+exports.and = function (n1) {
+  return function (n2) {
+    /* jshint bitwise: false */
+    return n1 & n2;
+  };
+};
+
+exports.or = function (n1) {
+  return function (n2) {
+    /* jshint bitwise: false */
+    return n1 | n2;
+  };
+};
+
+exports.xor = function (n1) {
+  return function (n2) {
+    /* jshint bitwise: false */
+    return n1 ^ n2;
+  };
+};
+
+exports.shl = function (n1) {
+  return function (n2) {
+    /* jshint bitwise: false */
+    return n1 << n2;
+  };
+};
+
+exports.shr = function (n1) {
+  return function (n2) {
+    /* jshint bitwise: false */
+    return n1 >> n2;
+  };
+};
+
+exports.zshr = function (n1) {
+  return function (n2) {
+    /* jshint bitwise: false */
+    return n1 >>> n2;
+  };
+};
+
+exports.complement = function (n) {
+  /* jshint bitwise: false */
+  return ~n;
+};
+
+},{}],165:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+module.exports = {
+    and: $foreign.and, 
+    complement: $foreign.complement, 
+    or: $foreign.or, 
+    shl: $foreign.shl, 
+    shr: $foreign.shr, 
+    xor: $foreign.xor, 
+    zshr: $foreign.zshr
+};
+
+},{"./foreign":164}],166:[function(require,module,exports){
+"use strict";
+
+// module Data.Int
+
+exports.fromNumberImpl = function (just) {
+  return function (nothing) {
+    return function (n) {
+      /* jshint bitwise: false */
+      return (n | 0) === n ? just(n) : nothing;
+    };
+  };
+};
+
+exports.toNumber = function (n) {
+  return n;
+};
+
+exports.fromStringAsImpl = function (just) {
+  return function (nothing) {
+    return function (radix) {
+      var digits;
+      if (radix < 11) {
+        digits = "[0-" + (radix - 1).toString() + "]";
+      } else if (radix === 11) {
+        digits = "[0-9a]";
+      } else {
+        digits = "[0-9a-" + String.fromCharCode(86 + radix) + "]";
+      }
+      var pattern = new RegExp("^[\\+\\-]?" + digits + "+$", "i");
+
+      return function (s) {
+        /* jshint bitwise: false */
+        if (pattern.test(s)) {
+          var i = parseInt(s, radix);
+          return (i | 0) === i ? just(i) : nothing;
+        } else {
+          return nothing;
+        }
+      };
+    };
+  };
+};
+
+exports.toStringAs = function (radix) {
+  return function (i) {
+    return i.toString(radix);
+  };
+};
+
+exports.pow = function (x) {
+  return function (y) {
+    /* jshint bitwise: false */
+    return Math.pow(x,y) | 0;
+  };
+};
+
+},{}],167:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Int_Bits = require("../Data.Int.Bits");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Show = require("../Data.Show");
+var Global = require("../Global");
+var $$Math = require("../Math");
+var Prelude = require("../Prelude");
+var Radix = function (x) {
+    return x;
+};
+var Even = (function () {
+    function Even() {
+
+    };
+    Even.value = new Even();
+    return Even;
+})();
+var Odd = (function () {
+    function Odd() {
+
+    };
+    Odd.value = new Odd();
+    return Odd;
+})();
+var showParity = new Data_Show.Show(function (v) {
+    if (v instanceof Even) {
+        return "Even";
+    };
+    if (v instanceof Odd) {
+        return "Odd";
+    };
+    throw new Error("Failed pattern match at Data.Int line 89, column 3 - line 90, column 3: " + [ v.constructor.name ]);
+});
+var radix = function (n) {
+    if (n >= 2 && n <= 36) {
+        return new Data_Maybe.Just(n);
+    };
+    if (Data_Boolean.otherwise) {
+        return Data_Maybe.Nothing.value;
+    };
+    throw new Error("Failed pattern match at Data.Int line 149, column 1 - line 150, column 38: " + [ n.constructor.name ]);
+};
+var odd = function (x) {
+    return (x & 1) !== 0;
+};
+var octal = 8;
+var hexadecimal = 16;
+var fromStringAs = $foreign.fromStringAsImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var fromString = fromStringAs(10);
+var fromNumber = $foreign.fromNumberImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var unsafeClamp = function (x) {
+    if (x === Global.infinity) {
+        return 0;
+    };
+    if (x === -Global.infinity) {
+        return 0;
+    };
+    if (x >= $foreign.toNumber(Data_Bounded.top(Data_Bounded.boundedInt))) {
+        return Data_Bounded.top(Data_Bounded.boundedInt);
+    };
+    if (x <= $foreign.toNumber(Data_Bounded.bottom(Data_Bounded.boundedInt))) {
+        return Data_Bounded.bottom(Data_Bounded.boundedInt);
+    };
+    if (Data_Boolean.otherwise) {
+        return Data_Maybe.fromMaybe(0)(fromNumber(x));
+    };
+    throw new Error("Failed pattern match at Data.Int line 65, column 1 - line 70, column 43: " + [ x.constructor.name ]);
+};
+var round = function ($13) {
+    return unsafeClamp($$Math.round($13));
+};
+var floor = function ($14) {
+    return unsafeClamp($$Math.floor($14));
+};
+var even = function (x) {
+    return (x & 1) === 0;
+};
+var parity = function (n) {
+    var $8 = even(n);
+    if ($8) {
+        return Even.value;
+    };
+    return Odd.value;
+};
+var eqParity = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        if (x instanceof Even && y instanceof Even) {
+            return true;
+        };
+        if (x instanceof Odd && y instanceof Odd) {
+            return true;
+        };
+        return false;
+    };
+});
+var ordParity = new Data_Ord.Ord(function () {
+    return eqParity;
+}, function (x) {
+    return function (y) {
+        if (x instanceof Even && y instanceof Even) {
+            return Data_Ordering.EQ.value;
+        };
+        if (x instanceof Even) {
+            return Data_Ordering.LT.value;
+        };
+        if (y instanceof Even) {
+            return Data_Ordering.GT.value;
+        };
+        if (x instanceof Odd && y instanceof Odd) {
+            return Data_Ordering.EQ.value;
+        };
+        throw new Error("Failed pattern match at Data.Int line 86, column 1 - line 86, column 40: " + [ x.constructor.name, y.constructor.name ]);
+    };
+});
+var decimal = 10;
+var ceil = function ($15) {
+    return unsafeClamp($$Math.ceil($15));
+};
+var boundedParity = new Data_Bounded.Bounded(function () {
+    return ordParity;
+}, Even.value, Odd.value);
+var binary = 2;
+var base36 = 36;
+module.exports = {
+    Even: Even, 
+    Odd: Odd, 
+    base36: base36, 
+    binary: binary, 
+    ceil: ceil, 
+    decimal: decimal, 
+    even: even, 
+    floor: floor, 
+    fromNumber: fromNumber, 
+    fromString: fromString, 
+    fromStringAs: fromStringAs, 
+    hexadecimal: hexadecimal, 
+    octal: octal, 
+    odd: odd, 
+    parity: parity, 
+    radix: radix, 
+    round: round, 
+    eqParity: eqParity, 
+    ordParity: ordParity, 
+    showParity: showParity, 
+    boundedParity: boundedParity, 
+    pow: $foreign.pow, 
+    toNumber: $foreign.toNumber, 
+    toStringAs: $foreign.toStringAs
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Boolean":130,"../Data.Bounded":133,"../Data.Eq":140,"../Data.HeytingAlgebra":162,"../Data.Int.Bits":165,"../Data.Maybe":204,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Show":241,"../Global":262,"../Math":266,"../Prelude":278,"./foreign":166}],168:[function(require,module,exports){
+"use strict";
+
+exports.defer = function () {
+
+  function Defer(thunk) {
+    if (this instanceof Defer) {
+      this.thunk = thunk;
+      return this;
+    } else {
+      return new Defer(thunk);
+    }
+  }
+
+  Defer.prototype.force = function () {
+    var value = this.thunk();
+    this.thunk = null;
+    this.force = function () {
+      return value;
+    };
+    return value;
+  };
+
+  return Defer;
+
+}();
+
+exports.force = function (l) {
+  return l.force();
+};
+
+},{}],169:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad = require("../Control.Monad");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
+var Data_Bounded = require("../Data.Bounded");
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_Eq = require("../Data.Eq");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Field = require("../Data.Field");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Ord = require("../Data.Ord");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var showLazy = function (dictShow) {
+    return new Data_Show.Show(function (x) {
+        return "(defer \\_ -> " + (Data_Show.show(dictShow)($foreign.force(x)) + ")");
+    });
+};
+var semiringLazy = function (dictSemiring) {
+    return new Data_Semiring.Semiring(function (a) {
+        return function (b) {
+            return $foreign.defer(function (v) {
+                return Data_Semiring.add(dictSemiring)($foreign.force(a))($foreign.force(b));
+            });
+        };
+    }, function (a) {
+        return function (b) {
+            return $foreign.defer(function (v) {
+                return Data_Semiring.mul(dictSemiring)($foreign.force(a))($foreign.force(b));
+            });
+        };
+    }, $foreign.defer(function (v) {
+        return Data_Semiring.one(dictSemiring);
+    }), $foreign.defer(function (v) {
+        return Data_Semiring.zero(dictSemiring);
+    }));
+};
+var semigroupLazy = function (dictSemigroup) {
+    return new Data_Semigroup.Semigroup(function (a) {
+        return function (b) {
+            return $foreign.defer(function (v) {
+                return Data_Semigroup.append(dictSemigroup)($foreign.force(a))($foreign.force(b));
+            });
+        };
+    });
+};
+var ringLazy = function (dictRing) {
+    return new Data_Ring.Ring(function () {
+        return semiringLazy(dictRing.Semiring0());
+    }, function (a) {
+        return function (b) {
+            return $foreign.defer(function (v) {
+                return Data_Ring.sub(dictRing)($foreign.force(a))($foreign.force(b));
+            });
+        };
+    });
+};
+var monoidLazy = function (dictMonoid) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupLazy(dictMonoid.Semigroup0());
+    }, $foreign.defer(function (v) {
+        return Data_Monoid.mempty(dictMonoid);
+    }));
+};
+var lazyLazy = new Control_Lazy.Lazy(function (f) {
+    return $foreign.defer(function (v) {
+        return $foreign.force(f(Data_Unit.unit));
+    });
+});
+var functorLazy = new Data_Functor.Functor(function (f) {
+    return function (l) {
+        return $foreign.defer(function (v) {
+            return f($foreign.force(l));
+        });
+    };
+});
+var invariantLazy = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorLazy));
+var extendLazy = new Control_Extend.Extend(function () {
+    return functorLazy;
+}, function (f) {
+    return function (x) {
+        return $foreign.defer(function (v) {
+            return f(x);
+        });
+    };
+});
+var eqLazy = function (dictEq) {
+    return new Data_Eq.Eq(function (x) {
+        return function (y) {
+            return Data_Eq.eq(dictEq)($foreign.force(x))($foreign.force(y));
+        };
+    });
+};
+var ordLazy = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqLazy(dictOrd.Eq0());
+    }, function (x) {
+        return function (y) {
+            return Data_Ord.compare(dictOrd)($foreign.force(x))($foreign.force(y));
+        };
+    });
+};
+var comonadLazy = new Control_Comonad.Comonad(function () {
+    return extendLazy;
+}, $foreign.force);
+var commutativeRingLazy = function (dictCommutativeRing) {
+    return new Data_CommutativeRing.CommutativeRing(function () {
+        return ringLazy(dictCommutativeRing.Ring0());
+    });
+};
+var euclideanRingLazy = function (dictEuclideanRing) {
+    return new Data_EuclideanRing.EuclideanRing(function () {
+        return commutativeRingLazy(dictEuclideanRing.CommutativeRing0());
+    }, function ($32) {
+        return Data_EuclideanRing.degree(dictEuclideanRing)($foreign.force($32));
+    }, function (a) {
+        return function (b) {
+            return $foreign.defer(function (v) {
+                return Data_EuclideanRing.div(dictEuclideanRing)($foreign.force(a))($foreign.force(b));
+            });
+        };
+    }, function (a) {
+        return function (b) {
+            return $foreign.defer(function (v) {
+                return Data_EuclideanRing.mod(dictEuclideanRing)($foreign.force(a))($foreign.force(b));
+            });
+        };
+    });
+};
+var fieldLazy = function (dictField) {
+    return new Data_Field.Field(function () {
+        return euclideanRingLazy(dictField.EuclideanRing0());
+    });
+};
+var boundedLazy = function (dictBounded) {
+    return new Data_Bounded.Bounded(function () {
+        return ordLazy(dictBounded.Ord0());
+    }, $foreign.defer(function (v) {
+        return Data_Bounded.bottom(dictBounded);
+    }), $foreign.defer(function (v) {
+        return Data_Bounded.top(dictBounded);
+    }));
+};
+var applyLazy = new Control_Apply.Apply(function () {
+    return functorLazy;
+}, function (f) {
+    return function (x) {
+        return $foreign.defer(function (v) {
+            return $foreign.force(f)($foreign.force(x));
+        });
+    };
+});
+var bindLazy = new Control_Bind.Bind(function () {
+    return applyLazy;
+}, function (l) {
+    return function (f) {
+        return $foreign.defer(function (v) {
+            return $foreign.force(f($foreign.force(l)));
+        });
+    };
+});
+var heytingAlgebraLazy = function (dictHeytingAlgebra) {
+    return new Data_HeytingAlgebra.HeytingAlgebra(function (a) {
+        return function (b) {
+            return Control_Apply.apply(applyLazy)(Data_Functor.map(functorLazy)(Data_HeytingAlgebra.conj(dictHeytingAlgebra))(a))(b);
+        };
+    }, function (a) {
+        return function (b) {
+            return Control_Apply.apply(applyLazy)(Data_Functor.map(functorLazy)(Data_HeytingAlgebra.disj(dictHeytingAlgebra))(a))(b);
+        };
+    }, $foreign.defer(function (v) {
+        return Data_HeytingAlgebra.ff(dictHeytingAlgebra);
+    }), function (a) {
+        return function (b) {
+            return Control_Apply.apply(applyLazy)(Data_Functor.map(functorLazy)(Data_HeytingAlgebra.implies(dictHeytingAlgebra))(a))(b);
+        };
+    }, function (a) {
+        return Data_Functor.map(functorLazy)(Data_HeytingAlgebra.not(dictHeytingAlgebra))(a);
+    }, $foreign.defer(function (v) {
+        return Data_HeytingAlgebra.tt(dictHeytingAlgebra);
+    }));
+};
+var booleanAlgebraLazy = function (dictBooleanAlgebra) {
+    return new Data_BooleanAlgebra.BooleanAlgebra(function () {
+        return heytingAlgebraLazy(dictBooleanAlgebra.HeytingAlgebra0());
+    });
+};
+var applicativeLazy = new Control_Applicative.Applicative(function () {
+    return applyLazy;
+}, function (a) {
+    return $foreign.defer(function (v) {
+        return a;
+    });
+});
+var monadLazy = new Control_Monad.Monad(function () {
+    return applicativeLazy;
+}, function () {
+    return bindLazy;
+});
+module.exports = {
+    semiringLazy: semiringLazy, 
+    ringLazy: ringLazy, 
+    commutativeRingLazy: commutativeRingLazy, 
+    euclideanRingLazy: euclideanRingLazy, 
+    fieldLazy: fieldLazy, 
+    eqLazy: eqLazy, 
+    ordLazy: ordLazy, 
+    boundedLazy: boundedLazy, 
+    semigroupLazy: semigroupLazy, 
+    monoidLazy: monoidLazy, 
+    heytingAlgebraLazy: heytingAlgebraLazy, 
+    booleanAlgebraLazy: booleanAlgebraLazy, 
+    functorLazy: functorLazy, 
+    invariantLazy: invariantLazy, 
+    applyLazy: applyLazy, 
+    applicativeLazy: applicativeLazy, 
+    bindLazy: bindLazy, 
+    monadLazy: monadLazy, 
+    extendLazy: extendLazy, 
+    comonadLazy: comonadLazy, 
+    showLazy: showLazy, 
+    lazyLazy: lazyLazy, 
+    defer: $foreign.defer, 
+    force: $foreign.force
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Lazy":51,"../Control.Monad":87,"../Control.Semigroupoid":93,"../Data.BooleanAlgebra":131,"../Data.Bounded":133,"../Data.CommutativeRing":134,"../Data.Eq":140,"../Data.EuclideanRing":142,"../Data.Field":143,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.HeytingAlgebra":162,"../Data.Monoid":213,"../Data.Ord":222,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Unit":259,"../Prelude":278,"./foreign":168}],170:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Lens_Lens_Tuple = require("../Data.Lens.Lens.Tuple");
+var Data_Lens_Lens_Unit = require("../Data.Lens.Lens.Unit");
+var Data_Lens_Prism_Either = require("../Data.Lens.Prism.Either");
+var Data_Lens_Prism_Maybe = require("../Data.Lens.Prism.Maybe");
+module.exports = {};
+
+},{"../Data.Lens.Lens.Tuple":186,"../Data.Lens.Lens.Unit":187,"../Data.Lens.Prism.Either":189,"../Data.Lens.Prism.Maybe":190}],171:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Lens_Internal_Forget = require("../Data.Lens.Internal.Forget");
+var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_List = require("../Data.List");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Maybe_First = require("../Data.Maybe.First");
+var Data_Maybe_Last = require("../Data.Maybe.Last");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Monoid_Additive = require("../Data.Monoid.Additive");
+var Data_Monoid_Conj = require("../Data.Monoid.Conj");
+var Data_Monoid_Disj = require("../Data.Monoid.Disj");
+var Data_Monoid_Dual = require("../Data.Monoid.Dual");
+var Data_Monoid_Endo = require("../Data.Monoid.Endo");
+var Data_Monoid_Multiplicative = require("../Data.Monoid.Multiplicative");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var unfolded = function (dictMonoid) {
+    return function (f) {
+        return function (p) {
+            var go = function ($42) {
+                return Data_Maybe.maybe(Data_Monoid.mempty(dictMonoid))(function (v) {
+                    return Data_Semigroup.append(dictMonoid.Semigroup0())(Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(p)(v.value0))(go(v.value1));
+                })(f($42));
+            };
+            return go;
+        };
+    };
+};
+var replicated = function (dictMonoid) {
+    return function (i) {
+        return function (v) {
+            var go = function (v1) {
+                return function (x) {
+                    if (v1 === 0) {
+                        return Data_Monoid.mempty(Data_Monoid.monoidFn(dictMonoid));
+                    };
+                    return Data_Semigroup.append(Data_Semigroup.semigroupFn(dictMonoid.Semigroup0()))(x)(go(v1 - 1 | 0)(x));
+                };
+            };
+            return go(i)(v);
+        };
+    };
+};
+var ifoldMapOf = function (p) {
+    return function (f) {
+        return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(p(Data_Lens_Internal_Indexed.Indexed(Data_Tuple.uncurry(f))));
+    };
+};
+var ifoldlOf = function (p) {
+    return function (f) {
+        return function (r) {
+            return function ($43) {
+                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(ifoldMapOf(p)(function (i) {
+                    return function ($44) {
+                        return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(f(i))($44)));
+                    };
+                })($43)));
+            };
+        };
+    };
+};
+var ifoldrOf = function (p) {
+    return function (f) {
+        return function (r) {
+            return function ($45) {
+                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(ifoldMapOf(p)(function (i) {
+                    return function ($46) {
+                        return Data_Monoid_Endo.Endo(f(i)($46));
+                    };
+                })($45));
+            };
+        };
+    };
+};
+var itoListOf = function (p) {
+    return ifoldrOf(p)(function (i) {
+        return function (x) {
+            return function (xs) {
+                return new Data_List_Types.Cons(new Data_Tuple.Tuple(i, x), xs);
+            };
+        };
+    })(Data_List_Types.Nil.value);
+};
+var itraverseOf_ = function (dictApplicative) {
+    return function (p) {
+        return function (f) {
+            return ifoldrOf(p)(function (i) {
+                return function (a) {
+                    return function (fu) {
+                        return Control_Apply.applySecond(dictApplicative.Apply0())(Data_Functor["void"]((dictApplicative.Apply0()).Functor0())(f(i)(a)))(fu);
+                    };
+                };
+            })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
+        };
+    };
+};
+var ifindOf = function (p) {
+    return function (f) {
+        return ifoldrOf(p)(function (i) {
+            return function (a) {
+                return Data_Maybe.maybe((function () {
+                    var $36 = f(i)(a);
+                    if ($36) {
+                        return new Data_Maybe.Just(a);
+                    };
+                    return Data_Maybe.Nothing.value;
+                })())(Data_Maybe.Just.create);
+            };
+        })(Data_Maybe.Nothing.value);
+    };
+};
+var ianyOf = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function (f) {
+            return function ($47) {
+                return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(ifoldMapOf(p)(function (i) {
+                    return function ($48) {
+                        return Data_Monoid_Disj.Disj(f(i)($48));
+                    };
+                })($47));
+            };
+        };
+    };
+};
+var iallOf = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function (f) {
+            return function ($49) {
+                return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(ifoldMapOf(p)(function (i) {
+                    return function ($50) {
+                        return Data_Monoid_Conj.Conj(f(i)($50));
+                    };
+                })($49));
+            };
+        };
+    };
+};
+var folded = function (dictMonoid) {
+    return function (dictFoldable) {
+        return function (v) {
+            return Data_Foldable.foldMap(dictFoldable)(dictMonoid)(v);
+        };
+    };
+};
+var foldMapOf = Data_Newtype.under(Data_Lens_Internal_Forget.newtypeForget)(Data_Lens_Internal_Forget.newtypeForget)(Data_Lens_Internal_Forget.Forget);
+var foldOf = function (p) {
+    return foldMapOf(p)(Control_Category.id(Control_Category.categoryFn));
+};
+var foldlOf = function (p) {
+    return function (f) {
+        return function (r) {
+            return function ($51) {
+                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(Data_Newtype.unwrap(Data_Monoid_Dual.newtypeDual)(foldMapOf(p)(function ($52) {
+                    return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo(Data_Function.flip(f)($52)));
+                })($51)));
+            };
+        };
+    };
+};
+var foldrOf = function (p) {
+    return function (f) {
+        return function (r) {
+            return function ($53) {
+                return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(r)(foldMapOf(p)(function ($54) {
+                    return Data_Monoid_Endo.Endo(f($54));
+                })($53));
+            };
+        };
+    };
+};
+var maximumOf = function (dictOrd) {
+    return function (p) {
+        var max = function (a) {
+            return function (b) {
+                var $38 = Data_Ord.greaterThan(dictOrd)(a)(b);
+                if ($38) {
+                    return a;
+                };
+                return b;
+            };
+        };
+        return foldrOf(p)(function (a) {
+            return function ($55) {
+                return Data_Maybe.Just.create(Data_Maybe.maybe(a)(max(a))($55));
+            };
+        })(Data_Maybe.Nothing.value);
+    };
+};
+var minimumOf = function (dictOrd) {
+    return function (p) {
+        var min = function (a) {
+            return function (b) {
+                var $39 = Data_Ord.lessThan(dictOrd)(a)(b);
+                if ($39) {
+                    return a;
+                };
+                return b;
+            };
+        };
+        return foldrOf(p)(function (a) {
+            return function ($56) {
+                return Data_Maybe.Just.create(Data_Maybe.maybe(a)(min(a))($56));
+            };
+        })(Data_Maybe.Nothing.value);
+    };
+};
+var toListOf = function (p) {
+    return foldrOf(p)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);
+};
+var toListOfOn = function (s) {
+    return function (p) {
+        return toListOf(p)(s);
+    };
+};
+var traverseOf_ = function (dictApplicative) {
+    return function (p) {
+        return function (f) {
+            return foldrOf(p)(function (a) {
+                return function (fu) {
+                    return Control_Apply.applySecond(dictApplicative.Apply0())(Data_Functor["void"]((dictApplicative.Apply0()).Functor0())(f(a)))(fu);
+                };
+            })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
+        };
+    };
+};
+var has = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function ($57) {
+            return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(foldMapOf(p)(Data_Function["const"](Data_HeytingAlgebra.tt(dictHeytingAlgebra)))($57));
+        };
+    };
+};
+var hasn$primet = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function ($58) {
+            return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(foldMapOf(p)(Data_Function["const"](Data_HeytingAlgebra.ff(dictHeytingAlgebra)))($58));
+        };
+    };
+};
+var lastOf = function (p) {
+    return function ($59) {
+        return Data_Newtype.unwrap(Data_Maybe_Last.newtypeLast)(foldMapOf(p)(function ($60) {
+            return Data_Maybe_Last.Last(Data_Maybe.Just.create($60));
+        })($59));
+    };
+};
+var lengthOf = function (p) {
+    return function ($61) {
+        return Data_Newtype.unwrap(Data_Monoid_Additive.newtypeAdditive)(foldMapOf(p)(Data_Function["const"](1))($61));
+    };
+};
+var preview = function (p) {
+    return function ($62) {
+        return Data_Newtype.unwrap(Data_Maybe_First.newtypeFirst)(foldMapOf(p)(function ($63) {
+            return Data_Maybe_First.First(Data_Maybe.Just.create($63));
+        })($62));
+    };
+};
+var previewOn = function (s) {
+    return function (p) {
+        return preview(p)(s);
+    };
+};
+var productOf = function (dictSemiring) {
+    return function (p) {
+        return function ($64) {
+            return Data_Newtype.unwrap(Data_Monoid_Multiplicative.newtypeMultiplicative)(foldMapOf(p)(Data_Monoid_Multiplicative.Multiplicative)($64));
+        };
+    };
+};
+var sequenceOf_ = function (dictApplicative) {
+    return function (p) {
+        return function ($65) {
+            return Data_Function.flip(Data_Newtype.unwrap(Data_Monoid_Endo.newtypeEndo))(Control_Applicative.pure(dictApplicative)(Data_Unit.unit))(foldMapOf(p)(function (f) {
+                return function (v) {
+                    return Control_Apply.applySecond(dictApplicative.Apply0())(f)(v);
+                };
+            })($65));
+        };
+    };
+};
+var sumOf = function (dictSemiring) {
+    return function (p) {
+        return function ($66) {
+            return Data_Newtype.unwrap(Data_Monoid_Additive.newtypeAdditive)(foldMapOf(p)(Data_Monoid_Additive.Additive)($66));
+        };
+    };
+};
+var firstOf = function (p) {
+    return function ($67) {
+        return Data_Newtype.unwrap(Data_Maybe_First.newtypeFirst)(foldMapOf(p)(function ($68) {
+            return Data_Maybe_First.First(Data_Maybe.Just.create($68));
+        })($67));
+    };
+};
+var findOf = function (p) {
+    return function (f) {
+        return foldrOf(p)(function (a) {
+            return Data_Maybe.maybe((function () {
+                var $40 = f(a);
+                if ($40) {
+                    return new Data_Maybe.Just(a);
+                };
+                return Data_Maybe.Nothing.value;
+            })())(Data_Maybe.Just.create);
+        })(Data_Maybe.Nothing.value);
+    };
+};
+var filtered = function (dictChoice) {
+    return function (f) {
+        return function ($69) {
+            return Data_Profunctor.dimap(dictChoice.Profunctor0())(function (x) {
+                var $41 = f(x);
+                if ($41) {
+                    return new Data_Either.Right(x);
+                };
+                return new Data_Either.Left(x);
+            })(Data_Either.either(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn)))(Data_Profunctor_Choice.right(dictChoice)($69));
+        };
+    };
+};
+var anyOf = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function (f) {
+            return function ($70) {
+                return Data_Newtype.unwrap(Data_Monoid_Disj.newtypeDisj)(foldMapOf(p)(function ($71) {
+                    return Data_Monoid_Disj.Disj(f($71));
+                })($70));
+            };
+        };
+    };
+};
+var elemOf = function (dictEq) {
+    return function (p) {
+        return function (a) {
+            return anyOf(Data_HeytingAlgebra.heytingAlgebraBoolean)(p)(function (v) {
+                return Data_Eq.eq(dictEq)(v)(a);
+            });
+        };
+    };
+};
+var orOf = function (dictHeytingAlgebra) {
+    return function (p) {
+        return anyOf(dictHeytingAlgebra)(p)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var allOf = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function (f) {
+            return function ($72) {
+                return Data_Newtype.unwrap(Data_Monoid_Conj.newtypeConj)(foldMapOf(p)(function ($73) {
+                    return Data_Monoid_Conj.Conj(f($73));
+                })($72));
+            };
+        };
+    };
+};
+var andOf = function (dictHeytingAlgebra) {
+    return function (p) {
+        return allOf(dictHeytingAlgebra)(p)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var notElemOf = function (dictEq) {
+    return function (p) {
+        return function (a) {
+            return allOf(Data_HeytingAlgebra.heytingAlgebraBoolean)(p)(function (v) {
+                return Data_Eq.notEq(dictEq)(v)(a);
+            });
+        };
+    };
+};
+module.exports = {
+    allOf: allOf, 
+    andOf: andOf, 
+    anyOf: anyOf, 
+    elemOf: elemOf, 
+    filtered: filtered, 
+    findOf: findOf, 
+    firstOf: firstOf, 
+    foldMapOf: foldMapOf, 
+    foldOf: foldOf, 
+    folded: folded, 
+    foldlOf: foldlOf, 
+    foldrOf: foldrOf, 
+    has: has, 
+    "hasn't": hasn$primet, 
+    iallOf: iallOf, 
+    ianyOf: ianyOf, 
+    ifoldMapOf: ifoldMapOf, 
+    ifoldlOf: ifoldlOf, 
+    ifoldrOf: ifoldrOf, 
+    itoListOf: itoListOf, 
+    itraverseOf_: itraverseOf_, 
+    lastOf: lastOf, 
+    lengthOf: lengthOf, 
+    maximumOf: maximumOf, 
+    minimumOf: minimumOf, 
+    notElemOf: notElemOf, 
+    orOf: orOf, 
+    preview: preview, 
+    previewOn: previewOn, 
+    productOf: productOf, 
+    replicated: replicated, 
+    sequenceOf_: sequenceOf_, 
+    sumOf: sumOf, 
+    toListOf: toListOf, 
+    toListOfOn: toListOfOn, 
+    traverseOf_: traverseOf_, 
+    unfolded: unfolded
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Lens.Internal.Forget":176,"../Data.Lens.Internal.Indexed":178,"../Data.Lens.Types":194,"../Data.List":200,"../Data.List.Types":199,"../Data.Maybe":204,"../Data.Maybe.First":202,"../Data.Maybe.Last":203,"../Data.Monoid":213,"../Data.Monoid.Additive":207,"../Data.Monoid.Conj":208,"../Data.Monoid.Disj":209,"../Data.Monoid.Dual":210,"../Data.Monoid.Endo":211,"../Data.Monoid.Multiplicative":212,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Tuple":255,"../Data.Unit":259,"../Prelude":278}],172:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Lens_Internal_Forget = require("../Data.Lens.Internal.Forget");
+var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var view = function (l) {
+    return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(l(Control_Category.id(Control_Category.categoryFn)));
+};
+var viewOn = function (s) {
+    return function (l) {
+        return view(l)(s);
+    };
+};
+var use = function (dictMonadState) {
+    return function (p) {
+        return Control_Monad_State_Class.gets(dictMonadState)(function (v) {
+            return viewOn(v)(p);
+        });
+    };
+};
+var to = function (f) {
+    return function (p) {
+        return function ($3) {
+            return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(p)(f($3));
+        };
+    };
+};
+var iview = function (l) {
+    return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(l(Data_Lens_Internal_Indexed.Indexed(Control_Category.id(Control_Category.categoryFn))));
+};
+var iuse = function (dictMonadState) {
+    return function (p) {
+        return Control_Monad_State_Class.gets(dictMonadState)(iview(p));
+    };
+};
+module.exports = {
+    iuse: iuse, 
+    iview: iview, 
+    to: to, 
+    use: use, 
+    view: view, 
+    viewOn: viewOn
+};
+
+},{"../Control.Category":47,"../Control.Monad.State.Class":81,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Lens.Internal.Forget":176,"../Data.Lens.Internal.Indexed":178,"../Data.Lens.Types":194,"../Data.Newtype":215,"../Data.Tuple":255,"../Prelude":278}],173:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Data_Distributive = require("../Data.Distributive");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Lens_Internal_Grating = require("../Data.Lens.Internal.Grating");
+var Data_Lens_Internal_Zipping = require("../Data.Lens.Internal.Zipping");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
+var Data_Profunctor_Costar = require("../Data.Profunctor.Costar");
+var Data_Profunctor_Star = require("../Data.Profunctor.Star");
+var Prelude = require("../Prelude");
+var zipWithOf = function (g) {
+    return function (f) {
+        return Data_Newtype.unwrap(Data_Lens_Internal_Zipping.newtypeZipping)(g(f));
+    };
+};
+var zipFWithOf = function (g) {
+    return function (f) {
+        return Data_Newtype.unwrap(Data_Profunctor_Costar.newtypeCostar)(g(f));
+    };
+};
+var withGrate = function (g) {
+    return Data_Newtype.unwrap(Data_Lens_Internal_Grating.newtypeGrating)(g(function (f) {
+        return f(Control_Category.id(Control_Category.categoryFn));
+    }));
+};
+var grate = function (f) {
+    return function (dictClosed) {
+        return function (pab) {
+            return Data_Profunctor.dimap(dictClosed.Profunctor0())(Data_Function.applyFlipped)(f)(Data_Profunctor_Closed.closed(dictClosed)(pab));
+        };
+    };
+};
+var cotraversed = function (dictDistributive) {
+    return function (dictClosed) {
+        return grate(function (f) {
+            return Data_Distributive.cotraverse(dictDistributive)(Data_Functor.functorFn)(f)(Control_Category.id(Control_Category.categoryFn));
+        })(dictClosed);
+    };
+};
+var collectOf = function (g) {
+    return function (f) {
+        return Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar)(g(f));
+    };
+};
+var cloneGrate = function (g) {
+    return function (dictClosed) {
+        return grate(withGrate(g))(dictClosed);
+    };
+};
+module.exports = {
+    cloneGrate: cloneGrate, 
+    collectOf: collectOf, 
+    cotraversed: cotraversed, 
+    grate: grate, 
+    withGrate: withGrate, 
+    zipFWithOf: zipFWithOf, 
+    zipWithOf: zipWithOf
+};
+
+},{"../Control.Category":47,"../Data.Distributive":136,"../Data.Function":151,"../Data.Functor":157,"../Data.Lens.Internal.Grating":177,"../Data.Lens.Internal.Zipping":184,"../Data.Lens.Types":194,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Closed":225,"../Data.Profunctor.Costar":227,"../Data.Profunctor.Star":229,"../Prelude":278}],174:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Monad_State = require("../Control.Monad.State");
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Monad_State_Trans = require("../Control.Monad.State.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Compose = require("../Data.Functor.Compose");
+var Data_Identity = require("../Data.Identity");
+var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
+var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Star = require("../Data.Profunctor.Star");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var unIndex = function (dictProfunctor) {
+    return function (l) {
+        return function ($7) {
+            return l(Data_Lens_Internal_Indexed.Indexed(Data_Profunctor.dimap(dictProfunctor)(Data_Tuple.snd)(Control_Category.id(Control_Category.categoryFn))($7)));
+        };
+    };
+};
+var iwander = function (itr) {
+    return function (dictWander) {
+        return function ($8) {
+            return Data_Lens_Internal_Wander.wander(dictWander)(function (dictApplicative) {
+                return function (f) {
+                    return function (s) {
+                        return itr(dictApplicative)(Data_Tuple.curry(f))(s);
+                    };
+                };
+            })(Data_Newtype.unwrap(Data_Lens_Internal_Indexed.newtypeIndexed)($8));
+        };
+    };
+};
+var positions = function (tr) {
+    return function (dictWander) {
+        return iwander(function (dictApplicative) {
+            return function (f) {
+                return function (s) {
+                    return Data_Function.flip(Control_Monad_State.evalState)(0)(Data_Newtype.unwrap(Data_Functor_Compose.newtypeCompose)(Data_Function.flip(Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar))(s)(tr(Data_Lens_Internal_Wander.wanderStar(Data_Functor_Compose.applicativeCompose(Control_Monad_State_Trans.applicativeStateT(Data_Identity.monadIdentity))(dictApplicative)))(function (a) {
+                        return Data_Functor_Compose.Compose(Control_Apply.applyFirst(Control_Monad_State_Trans.applyStateT(Data_Identity.monadIdentity))(Control_Apply.apply(Control_Monad_State_Trans.applyStateT(Data_Identity.monadIdentity))(Data_Functor.map(Control_Monad_State_Trans.functorStateT(Data_Identity.functorIdentity))(f)(Control_Monad_State_Class.get(Control_Monad_State_Trans.monadStateStateT(Data_Identity.monadIdentity))))(Control_Applicative.pure(Control_Monad_State_Trans.applicativeStateT(Data_Identity.monadIdentity))(a)))(Control_Monad_State_Class.modify(Control_Monad_State_Trans.monadStateStateT(Data_Identity.monadIdentity))(function (v) {
+                            return v + 1 | 0;
+                        })));
+                    }))));
+                };
+            };
+        })(dictWander);
+    };
+};
+var asIndex = function (dictProfunctor) {
+    return function (l) {
+        return function ($9) {
+            return l(Data_Lens_Internal_Indexed.Indexed(Data_Profunctor.dimap(dictProfunctor)(Data_Tuple.fst)(Control_Category.id(Control_Category.categoryFn))($9)));
+        };
+    };
+};
+module.exports = {
+    asIndex: asIndex, 
+    iwander: iwander, 
+    positions: positions, 
+    unIndex: unIndex
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Monad.State":83,"../Control.Monad.State.Class":81,"../Control.Monad.State.Trans":82,"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Compose":153,"../Data.Identity":163,"../Data.Lens.Internal.Indexed":178,"../Data.Lens.Internal.Wander":183,"../Data.Lens.Types":194,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Star":229,"../Data.Semiring":239,"../Data.Tuple":255,"../Prelude":278}],175:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Functor = require("../Data.Functor");
+var Data_Profunctor = require("../Data.Profunctor");
+var Prelude = require("../Prelude");
+var Exchange = (function () {
+    function Exchange(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Exchange.create = function (value0) {
+        return function (value1) {
+            return new Exchange(value0, value1);
+        };
+    };
+    return Exchange;
+})();
+var profunctorExchange = new Data_Profunctor.Profunctor(function (f) {
+    return function (g) {
+        return function (v) {
+            return new Exchange(function ($11) {
+                return v.value0(f($11));
+            }, function ($12) {
+                return g(v.value1($12));
+            });
+        };
+    };
+});
+var functorExchange = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return new Exchange(v.value0, function ($13) {
+            return f(v.value1($13));
+        });
+    };
+});
+module.exports = {
+    Exchange: Exchange, 
+    functorExchange: functorExchange, 
+    profunctorExchange: profunctorExchange
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Functor":157,"../Data.Profunctor":231,"../Prelude":278}],176:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Const = require("../Data.Const");
+var Data_Either = require("../Data.Either");
+var Data_Functor = require("../Data.Functor");
+var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Profunctor_Cochoice = require("../Data.Profunctor.Cochoice");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Forget = function (x) {
+    return x;
+};
+var profunctorForget = new Data_Profunctor.Profunctor(function (f) {
+    return function (v) {
+        return function (v1) {
+            return function ($25) {
+                return v1(f($25));
+            };
+        };
+    };
+});
+var strongForget = new Data_Profunctor_Strong.Strong(function () {
+    return profunctorForget;
+}, function (v) {
+    return function ($26) {
+        return v(Data_Tuple.fst($26));
+    };
+}, function (v) {
+    return function ($27) {
+        return v(Data_Tuple.snd($27));
+    };
+});
+var newtypeForget = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Forget);
+var cochoiceForget = new Data_Profunctor_Cochoice.Cochoice(function () {
+    return profunctorForget;
+}, function (v) {
+    return function ($28) {
+        return v(Data_Either.Left.create($28));
+    };
+}, function (v) {
+    return function ($29) {
+        return v(Data_Either.Right.create($29));
+    };
+});
+var choiceForget = function (dictMonoid) {
+    return new Data_Profunctor_Choice.Choice(function () {
+        return profunctorForget;
+    }, function (v) {
+        return Data_Either.either(v)(Data_Monoid.mempty(Data_Monoid.monoidFn(dictMonoid)));
+    }, function (v) {
+        return Data_Either.either(Data_Monoid.mempty(Data_Monoid.monoidFn(dictMonoid)))(v);
+    });
+};
+var wanderForget = function (dictMonoid) {
+    return new Data_Lens_Internal_Wander.Wander(function () {
+        return choiceForget(dictMonoid);
+    }, function () {
+        return strongForget;
+    }, function (f) {
+        return function (v) {
+            return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Const.newtypeConst)(Data_Const.newtypeConst)(Data_Const.Const)(f(Data_Const.applicativeConst(dictMonoid)))(v);
+        };
+    });
+};
+module.exports = {
+    Forget: Forget, 
+    newtypeForget: newtypeForget, 
+    profunctorForget: profunctorForget, 
+    choiceForget: choiceForget, 
+    strongForget: strongForget, 
+    cochoiceForget: cochoiceForget, 
+    wanderForget: wanderForget
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Const":135,"../Data.Either":138,"../Data.Functor":157,"../Data.Lens.Internal.Wander":183,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Data.Profunctor.Cochoice":226,"../Data.Profunctor.Strong":230,"../Data.Tuple":255,"../Prelude":278}],177:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
+var Prelude = require("../Prelude");
+var Grating = function (x) {
+    return x;
+};
+var profunctorGrating = new Data_Profunctor.Profunctor(function (f) {
+    return function (g) {
+        return function (v) {
+            return function (d) {
+                return g(v(function (k) {
+                    return d(function ($9) {
+                        return k(f($9));
+                    });
+                }));
+            };
+        };
+    };
+});
+var newtypeGrating = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Grating);
+var closedGrating = new Data_Profunctor_Closed.Closed(function () {
+    return profunctorGrating;
+}, function (v) {
+    return function (f) {
+        return function (x) {
+            return v(function (k) {
+                return f(function (g) {
+                    return k(g(x));
+                });
+            });
+        };
+    };
+});
+module.exports = {
+    Grating: Grating, 
+    newtypeGrating: newtypeGrating, 
+    profunctorGrating: profunctorGrating, 
+    closedGrating: closedGrating
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Closed":225,"../Prelude":278}],178:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Indexed = function (x) {
+    return x;
+};
+var profunctorIndexed = function (dictProfunctor) {
+    return new Data_Profunctor.Profunctor(function (f) {
+        return function (g) {
+            return function (v) {
+                return Data_Profunctor.dimap(dictProfunctor)(Data_Profunctor_Strong.second(Data_Profunctor_Strong.strongFn)(f))(g)(v);
+            };
+        };
+    });
+};
+var strongIndexed = function (dictStrong) {
+    return new Data_Profunctor_Strong.Strong(function () {
+        return profunctorIndexed(dictStrong.Profunctor0());
+    }, function (v) {
+        return Indexed(Data_Profunctor.lmap(dictStrong.Profunctor0())(function (v1) {
+            return new Data_Tuple.Tuple(new Data_Tuple.Tuple(v1.value0, v1.value1.value0), v1.value1.value1);
+        })(Data_Profunctor_Strong.first(dictStrong)(v)));
+    }, function (v) {
+        return Indexed(Data_Profunctor.lmap(dictStrong.Profunctor0())(function (v1) {
+            return new Data_Tuple.Tuple(v1.value1.value0, new Data_Tuple.Tuple(v1.value0, v1.value1.value1));
+        })(Data_Profunctor_Strong.second(dictStrong)(v)));
+    });
+};
+var newtypeIndexed = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Indexed);
+var choiceIndexed = function (dictChoice) {
+    return new Data_Profunctor_Choice.Choice(function () {
+        return profunctorIndexed(dictChoice.Profunctor0());
+    }, function (v) {
+        return Indexed(Data_Profunctor.lmap(dictChoice.Profunctor0())(function (v1) {
+            return Data_Either.either(function ($47) {
+                return Data_Either.Left.create(Data_Tuple.Tuple.create(v1.value0)($47));
+            })(Data_Either.Right.create)(v1.value1);
+        })(Data_Profunctor_Choice.left(dictChoice)(v)));
+    }, function (v) {
+        return Indexed(Data_Profunctor.lmap(dictChoice.Profunctor0())(function (v1) {
+            return Data_Either.either(Data_Either.Left.create)(function ($48) {
+                return Data_Either.Right.create(Data_Tuple.Tuple.create(v1.value0)($48));
+            })(v1.value1);
+        })(Data_Profunctor_Choice.right(dictChoice)(v)));
+    });
+};
+var wanderIndexed = function (dictWander) {
+    return new Data_Lens_Internal_Wander.Wander(function () {
+        return choiceIndexed(dictWander.Choice1());
+    }, function () {
+        return strongIndexed(dictWander.Strong0());
+    }, function (trav) {
+        return function (v) {
+            return Indexed(Data_Lens_Internal_Wander.wander(dictWander)(function (dictApplicative) {
+                return function (ia2fb) {
+                    return function (v1) {
+                        return trav(dictApplicative)(function ($49) {
+                            return ia2fb(Data_Tuple.Tuple.create(v1.value0)($49));
+                        })(v1.value1);
+                    };
+                };
+            })(v));
+        };
+    });
+};
+module.exports = {
+    Indexed: Indexed, 
+    newtypeIndexed: newtypeIndexed, 
+    profunctorIndexed: profunctorIndexed, 
+    strongIndexed: strongIndexed, 
+    choiceIndexed: choiceIndexed, 
+    wanderIndexed: wanderIndexed
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Function":151,"../Data.Lens.Internal.Wander":183,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Data.Profunctor.Strong":230,"../Data.Tuple":255,"../Prelude":278}],179:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Either = require("../Data.Either");
+var Data_Functor = require("../Data.Functor");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Prelude = require("../Prelude");
+var Market = (function () {
+    function Market(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Market.create = function (value0) {
+        return function (value1) {
+            return new Market(value0, value1);
+        };
+    };
+    return Market;
+})();
+var profunctorMarket = new Data_Profunctor.Profunctor(function (f) {
+    return function (g) {
+        return function (v) {
+            return new Market(function ($19) {
+                return g(v.value0($19));
+            }, function ($20) {
+                return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(g)(v.value1(f($20)));
+            });
+        };
+    };
+});
+var functorMarket = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return new Market(function ($21) {
+            return f(v.value0($21));
+        }, function ($22) {
+            return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(f)(v.value1($22));
+        });
+    };
+});
+var choiceMarket = new Data_Profunctor_Choice.Choice(function () {
+    return profunctorMarket;
+}, function (v) {
+    return new Market(function ($23) {
+        return Data_Either.Left.create(v.value0($23));
+    }, Data_Either.either(function ($24) {
+        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(Data_Either.Left.create)(v.value1($24));
+    })(function ($25) {
+        return Data_Either.Left.create(Data_Either.Right.create($25));
+    }));
+}, function (v) {
+    return new Market(function ($26) {
+        return Data_Either.Right.create(v.value0($26));
+    }, Data_Either.either(function ($27) {
+        return Data_Either.Left.create(Data_Either.Left.create($27));
+    })(function ($28) {
+        return Data_Bifunctor.lmap(Data_Either.bifunctorEither)(Data_Either.Right.create)(v.value1($28));
+    }));
+});
+module.exports = {
+    Market: Market, 
+    functorMarket: functorMarket, 
+    profunctorMarket: profunctorMarket, 
+    choiceMarket: choiceMarket
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Bifunctor":128,"../Data.Either":138,"../Data.Functor":157,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Prelude":278}],180:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Profunctor_Cochoice = require("../Data.Profunctor.Cochoice");
+var Data_Profunctor_Costrong = require("../Data.Profunctor.Costrong");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Prelude = require("../Prelude");
+var Re = function (x) {
+    return x;
+};
+var profunctorRe = function (dictProfunctor) {
+    return new Data_Profunctor.Profunctor(function (f) {
+        return function (g) {
+            return function (v) {
+                return function ($28) {
+                    return v(Data_Profunctor.dimap(dictProfunctor)(g)(f)($28));
+                };
+            };
+        };
+    });
+};
+var strongRe = function (dictStrong) {
+    return new Data_Profunctor_Costrong.Costrong(function () {
+        return profunctorRe(dictStrong.Profunctor0());
+    }, function (v) {
+        return function ($29) {
+            return v(Data_Profunctor_Strong.first(dictStrong)($29));
+        };
+    }, function (v) {
+        return function ($30) {
+            return v(Data_Profunctor_Strong.second(dictStrong)($30));
+        };
+    });
+};
+var newtypeRe = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Re);
+var costrongRe = function (dictCostrong) {
+    return new Data_Profunctor_Strong.Strong(function () {
+        return profunctorRe(dictCostrong.Profunctor0());
+    }, function (v) {
+        return function ($31) {
+            return v(Data_Profunctor_Costrong.unfirst(dictCostrong)($31));
+        };
+    }, function (v) {
+        return function ($32) {
+            return v(Data_Profunctor_Costrong.unsecond(dictCostrong)($32));
+        };
+    });
+};
+var cochoiceRe = function (dictCochoice) {
+    return new Data_Profunctor_Choice.Choice(function () {
+        return profunctorRe(dictCochoice.Profunctor0());
+    }, function (v) {
+        return function ($33) {
+            return v(Data_Profunctor_Cochoice.unleft(dictCochoice)($33));
+        };
+    }, function (v) {
+        return function ($34) {
+            return v(Data_Profunctor_Cochoice.unright(dictCochoice)($34));
+        };
+    });
+};
+var choiceRe = function (dictChoice) {
+    return new Data_Profunctor_Cochoice.Cochoice(function () {
+        return profunctorRe(dictChoice.Profunctor0());
+    }, function (v) {
+        return function ($35) {
+            return v(Data_Profunctor_Choice.left(dictChoice)($35));
+        };
+    }, function (v) {
+        return function ($36) {
+            return v(Data_Profunctor_Choice.right(dictChoice)($36));
+        };
+    });
+};
+module.exports = {
+    Re: Re, 
+    newtypeRe: newtypeRe, 
+    profunctorRe: profunctorRe, 
+    choiceRe: choiceRe, 
+    cochoiceRe: cochoiceRe, 
+    strongRe: strongRe, 
+    costrongRe: costrongRe
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Data.Profunctor.Cochoice":226,"../Data.Profunctor.Costrong":228,"../Data.Profunctor.Strong":230,"../Prelude":278}],181:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Shop = (function () {
+    function Shop(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Shop.create = function (value0) {
+        return function (value1) {
+            return new Shop(value0, value1);
+        };
+    };
+    return Shop;
+})();
+var profunctorShop = new Data_Profunctor.Profunctor(function (f) {
+    return function (g) {
+        return function (v) {
+            return new Shop(function ($30) {
+                return v.value0(f($30));
+            }, function (s) {
+                return function ($31) {
+                    return g(v.value1(f(s))($31));
+                };
+            });
+        };
+    };
+});
+var strongShop = new Data_Profunctor_Strong.Strong(function () {
+    return profunctorShop;
+}, function (v) {
+    return new Shop(function (v1) {
+        return v.value0(v1.value0);
+    }, function (v1) {
+        return function (b) {
+            return new Data_Tuple.Tuple(v.value1(v1.value0)(b), v1.value1);
+        };
+    });
+}, function (v) {
+    return new Shop(function (v1) {
+        return v.value0(v1.value1);
+    }, function (v1) {
+        return function (b) {
+            return new Data_Tuple.Tuple(v1.value0, v.value1(v1.value1)(b));
+        };
+    });
+});
+module.exports = {
+    Shop: Shop, 
+    profunctorShop: profunctorShop, 
+    strongShop: strongShop
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Profunctor":231,"../Data.Profunctor.Strong":230,"../Data.Tuple":255,"../Prelude":278}],182:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Either = require("../Data.Either");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Profunctor_Costrong = require("../Data.Profunctor.Costrong");
+var Data_Tuple = require("../Data.Tuple");
+var Tagged = function (x) {
+    return x;
+};
+var taggedProfunctor = new Data_Profunctor.Profunctor(function (v) {
+    return function (g) {
+        return function (v1) {
+            return g(v1);
+        };
+    };
+});
+var taggedCostrong = new Data_Profunctor_Costrong.Costrong(function () {
+    return taggedProfunctor;
+}, function (v) {
+    return v.value0;
+}, function (v) {
+    return v.value1;
+});
+var taggedChoice = new Data_Profunctor_Choice.Choice(function () {
+    return taggedProfunctor;
+}, function (v) {
+    return new Data_Either.Left(v);
+}, function (v) {
+    return new Data_Either.Right(v);
+});
+var newtypeTagged = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Tagged);
+module.exports = {
+    Tagged: Tagged, 
+    newtypeTagged: newtypeTagged, 
+    taggedProfunctor: taggedProfunctor, 
+    taggedChoice: taggedChoice, 
+    taggedCostrong: taggedCostrong
+};
+
+},{"../Data.Either":138,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Data.Profunctor.Costrong":228,"../Data.Tuple":255}],183:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Functor = require("../Data.Functor");
+var Data_Identity = require("../Data.Identity");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Profunctor_Star = require("../Data.Profunctor.Star");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Prelude = require("../Prelude");
+var Wander = function (Choice1, Strong0, wander) {
+    this.Choice1 = Choice1;
+    this.Strong0 = Strong0;
+    this.wander = wander;
+};
+var wanderStar = function (dictApplicative) {
+    return new Wander(function () {
+        return Data_Profunctor_Star.choiceStar(dictApplicative);
+    }, function () {
+        return Data_Profunctor_Star.strongStar((dictApplicative.Apply0()).Functor0());
+    }, function (t) {
+        return function (v) {
+            return t(dictApplicative)(v);
+        };
+    });
+};
+var wanderFunction = new Wander(function () {
+    return Data_Profunctor_Choice.choiceFn;
+}, function () {
+    return Data_Profunctor_Strong.strongFn;
+}, function (t) {
+    return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Identity.newtypeIdentity)(Data_Identity.newtypeIdentity)(Data_Identity.Identity)(t(Data_Identity.applicativeIdentity));
+});
+var wander = function (dict) {
+    return dict.wander;
+};
+module.exports = {
+    Wander: Wander, 
+    wander: wander, 
+    wanderFunction: wanderFunction, 
+    wanderStar: wanderStar
+};
+
+},{"../Data.Functor":157,"../Data.Identity":163,"../Data.Newtype":215,"../Data.Profunctor.Choice":224,"../Data.Profunctor.Star":229,"../Data.Profunctor.Strong":230,"../Prelude":278}],184:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
+var Zipping = function (x) {
+    return x;
+};
+var profunctorZipping = new Data_Profunctor.Profunctor(function (f) {
+    return function (g) {
+        return function (v) {
+            return function (a1) {
+                return function (a2) {
+                    return g(v(f(a1))(f(a2)));
+                };
+            };
+        };
+    };
+});
+var newtypeZipping = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Zipping);
+var closedZipping = new Data_Profunctor_Closed.Closed(function () {
+    return profunctorZipping;
+}, function (v) {
+    return function (f1) {
+        return function (f2) {
+            return function (x) {
+                return v(f1(x))(f2(x));
+            };
+        };
+    };
+});
+module.exports = {
+    Zipping: Zipping, 
+    newtypeZipping: newtypeZipping, 
+    profunctorZipping: profunctorZipping, 
+    closedZipping: closedZipping
+};
+
+},{"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Closed":225}],185:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Lens_Internal_Exchange = require("../Data.Lens.Internal.Exchange");
+var Data_Lens_Internal_Re = require("../Data.Lens.Internal.Re");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var withIso = function (l) {
+    return function (f) {
+        var v = l(new Data_Lens_Internal_Exchange.Exchange(Control_Category.id(Control_Category.categoryFn), Control_Category.id(Control_Category.categoryFn)));
+        return f(v.value0)(v.value1);
+    };
+};
+var under = function (l) {
+    return withIso(l)(function (sa) {
+        return function (bt) {
+            return function (ts) {
+                return function ($19) {
+                    return sa(ts(bt($19)));
+                };
+            };
+        };
+    });
+};
+var re = function (t) {
+    return Data_Newtype.unwrap(Data_Lens_Internal_Re.newtypeRe)(t(Control_Category.id(Control_Category.categoryFn)));
+};
+var iso = function (f) {
+    return function (g) {
+        return function (dictProfunctor) {
+            return function (pab) {
+                return Data_Profunctor.dimap(dictProfunctor)(f)(g)(pab);
+            };
+        };
+    };
+};
+var mapping = function (dictFunctor) {
+    return function (dictFunctor1) {
+        return function (l) {
+            return function (dictProfunctor) {
+                return withIso(l)(function (sa) {
+                    return function (bt) {
+                        return iso(Data_Functor.map(dictFunctor)(sa))(Data_Functor.map(dictFunctor1)(bt))(dictProfunctor);
+                    };
+                });
+            };
+        };
+    };
+};
+var non = function (dictEq) {
+    return function (def) {
+        return function (dictProfunctor) {
+            var g = function (a) {
+                if (Data_Eq.eq(dictEq)(a)(def)) {
+                    return Data_Maybe.Nothing.value;
+                };
+                if (Data_Boolean.otherwise) {
+                    return new Data_Maybe.Just(a);
+                };
+                throw new Error("Failed pattern match at Data.Lens.Iso line 44, column 9 - line 45, column 33: " + [ a.constructor.name ]);
+            };
+            return iso(Data_Maybe.fromMaybe(def))(g)(dictProfunctor);
+        };
+    };
+};
+var uncurried = function (dictProfunctor) {
+    return iso(Data_Tuple.uncurry)(Data_Tuple.curry)(dictProfunctor);
+};
+var flipped = function (dictProfunctor) {
+    return iso(Data_Function.flip)(Data_Function.flip)(dictProfunctor);
+};
+var dimapping = function (dictProfunctor) {
+    return function (dictProfunctor1) {
+        return function (f) {
+            return function (g) {
+                return function (dictProfunctor2) {
+                    return withIso(f)(function (sa) {
+                        return function (bt) {
+                            return withIso(g)(function (ssaa) {
+                                return function (bbtt) {
+                                    return iso(Data_Profunctor.dimap(dictProfunctor)(sa)(ssaa))(Data_Profunctor.dimap(dictProfunctor1)(bt)(bbtt))(dictProfunctor2);
+                                };
+                            });
+                        };
+                    });
+                };
+            };
+        };
+    };
+};
+var curried = function (dictProfunctor) {
+    return iso(Data_Tuple.curry)(Data_Tuple.uncurry)(dictProfunctor);
+};
+var cloneIso = function (l) {
+    return function (dictProfunctor) {
+        return withIso(l)(function (x) {
+            return function (y) {
+                return function (p) {
+                    return iso(x)(y)(dictProfunctor)(p);
+                };
+            };
+        });
+    };
+};
+var auf = function (dictProfunctor) {
+    return function (l) {
+        return withIso(l)(function (sa) {
+            return function (bt) {
+                return function (f) {
+                    return function (g) {
+                        return function (e) {
+                            return bt(f(Data_Profunctor.rmap(dictProfunctor)(sa)(g))(e));
+                        };
+                    };
+                };
+            };
+        });
+    };
+};
+var au = function (l) {
+    return withIso(l)(function (sa) {
+        return function (bt) {
+            return function (f) {
+                return function (e) {
+                    return sa(f(bt)(e));
+                };
+            };
+        };
+    });
+};
+module.exports = {
+    au: au, 
+    auf: auf, 
+    cloneIso: cloneIso, 
+    curried: curried, 
+    dimapping: dimapping, 
+    flipped: flipped, 
+    iso: iso, 
+    mapping: mapping, 
+    non: non, 
+    re: re, 
+    uncurried: uncurried, 
+    under: under, 
+    withIso: withIso
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Boolean":130,"../Data.Eq":140,"../Data.Function":151,"../Data.Functor":157,"../Data.Lens.Internal.Exchange":175,"../Data.Lens.Internal.Re":180,"../Data.Lens.Types":194,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Tuple":255,"../Prelude":278}],186:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Lens_Lens = require("../Data.Lens.Lens");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+var _2 = function (dictStrong) {
+    return Data_Profunctor_Strong.second(dictStrong);
+};
+var _1 = function (dictStrong) {
+    return Data_Profunctor_Strong.first(dictStrong);
+};
+module.exports = {
+    _1: _1, 
+    _2: _2
+};
+
+},{"../Data.Lens.Lens":188,"../Data.Profunctor.Strong":230,"../Data.Tuple":255}],187:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Function = require("../Data.Function");
+var Data_Lens_Lens = require("../Data.Lens.Lens");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var united = function (dictStrong) {
+    return Data_Lens_Lens.lens(Data_Function["const"](Data_Unit.unit))(Data_Function["const"])(dictStrong);
+};
+module.exports = {
+    united: united
+};
+
+},{"../Data.Function":151,"../Data.Lens.Lens":188,"../Data.Unit":259,"../Prelude":278}],188:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
+var Data_Lens_Internal_Shop = require("../Data.Lens.Internal.Shop");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var withLens = function (l) {
+    return function (f) {
+        var v = l(new Data_Lens_Internal_Shop.Shop(Control_Category.id(Control_Category.categoryFn), function (v1) {
+            return function (b) {
+                return b;
+            };
+        }));
+        return f(v.value0)(v.value1);
+    };
+};
+var withIndexedLens = function (l) {
+    return function (f) {
+        var v = l(new Data_Lens_Internal_Shop.Shop(Control_Category.id(Control_Category.categoryFn), function (v1) {
+            return function (b) {
+                return b;
+            };
+        }));
+        return f(v.value0)(v.value1);
+    };
+};
+var lens$prime = function (to) {
+    return function (dictStrong) {
+        return function (pab) {
+            return Data_Profunctor.dimap(dictStrong.Profunctor0())(to)(function (v) {
+                return v.value1(v.value0);
+            })(Data_Profunctor_Strong.first(dictStrong)(pab));
+        };
+    };
+};
+var lens = function (get) {
+    return function (set) {
+        return function (dictStrong) {
+            return lens$prime(function (s) {
+                return new Data_Tuple.Tuple(get(s), function (b) {
+                    return set(s)(b);
+                });
+            })(dictStrong);
+        };
+    };
+};
+var ilens$prime = function (to) {
+    return function (dictStrong) {
+        return function (pab) {
+            return Data_Profunctor.dimap(dictStrong.Profunctor0())(to)(function (v) {
+                return v.value1(v.value0);
+            })(Data_Profunctor_Strong.first(dictStrong)(Data_Newtype.un(Data_Lens_Internal_Indexed.newtypeIndexed)(Data_Lens_Internal_Indexed.Indexed)(pab)));
+        };
+    };
+};
+var ilens = function (get) {
+    return function (set) {
+        return function (dictStrong) {
+            return ilens$prime(function (s) {
+                return new Data_Tuple.Tuple(get(s), function (b) {
+                    return set(s)(b);
+                });
+            })(dictStrong);
+        };
+    };
+};
+var cloneLens = function (l) {
+    return function (dictStrong) {
+        return withLens(l)(function (x) {
+            return function (y) {
+                return function (p) {
+                    return lens(x)(y)(dictStrong)(p);
+                };
+            };
+        });
+    };
+};
+var cloneIndexedLens = function (l) {
+    return function (dictStrong) {
+        return withIndexedLens(l)(function (x) {
+            return function (y) {
+                return function (p) {
+                    return ilens(x)(y)(dictStrong)(p);
+                };
+            };
+        });
+    };
+};
+module.exports = {
+    cloneIndexedLens: cloneIndexedLens, 
+    cloneLens: cloneLens, 
+    ilens: ilens, 
+    "ilens'": ilens$prime, 
+    lens: lens, 
+    "lens'": lens$prime, 
+    withIndexedLens: withIndexedLens, 
+    withLens: withLens
+};
+
+},{"../Control.Category":47,"../Data.Lens.Internal.Indexed":178,"../Data.Lens.Internal.Shop":181,"../Data.Lens.Types":194,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Strong":230,"../Data.Tuple":255,"../Prelude":278}],189:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Either = require("../Data.Either");
+var Data_Lens_Prism = require("../Data.Lens.Prism");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var _Right = function (dictChoice) {
+    return Data_Profunctor_Choice.right(dictChoice);
+};
+var _Left = function (dictChoice) {
+    return Data_Profunctor_Choice.left(dictChoice);
+};
+module.exports = {
+    _Left: _Left, 
+    _Right: _Right
+};
+
+},{"../Data.Either":138,"../Data.Lens.Prism":191,"../Data.Profunctor.Choice":224}],190:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Lens_Prism = require("../Data.Lens.Prism");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var _Nothing = function (dictChoice) {
+    return Data_Lens_Prism.prism(Data_Function["const"](Data_Maybe.Nothing.value))(Data_Maybe.maybe(new Data_Either.Right(Data_Unit.unit))(Data_Function["const"](new Data_Either.Left(Data_Maybe.Nothing.value))))(dictChoice);
+};
+var _Just = function (dictChoice) {
+    return Data_Lens_Prism.prism(Data_Maybe.Just.create)(Data_Maybe.maybe(new Data_Either.Left(Data_Maybe.Nothing.value))(Data_Either.Right.create))(dictChoice);
+};
+module.exports = {
+    _Just: _Just, 
+    _Nothing: _Nothing
+};
+
+},{"../Data.Either":138,"../Data.Function":151,"../Data.Lens.Prism":191,"../Data.Maybe":204,"../Data.Unit":259,"../Prelude":278}],191:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Lens_Internal_Market = require("../Data.Lens.Internal.Market");
+var Data_Lens_Internal_Tagged = require("../Data.Lens.Internal.Tagged");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Prelude = require("../Prelude");
+var withPrism = function (l) {
+    return function (f) {
+        var v = l(new Data_Lens_Internal_Market.Market(Control_Category.id(Control_Category.categoryFn), Data_Either.Right.create));
+        return f(v.value0)(v.value1);
+    };
+};
+var review = Data_Newtype.under(Data_Lens_Internal_Tagged.newtypeTagged)(Data_Lens_Internal_Tagged.newtypeTagged)(Data_Lens_Internal_Tagged.Tagged);
+var prism = function (to) {
+    return function (fro) {
+        return function (dictChoice) {
+            return function (pab) {
+                return Data_Profunctor.dimap(dictChoice.Profunctor0())(fro)(Data_Either.either(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn)))(Data_Profunctor_Choice.right(dictChoice)(Data_Profunctor.rmap(dictChoice.Profunctor0())(to)(pab)));
+            };
+        };
+    };
+};
+var prism$prime = function (to) {
+    return function (fro) {
+        return function (dictChoice) {
+            return prism(to)(function (s) {
+                return Data_Maybe.maybe(new Data_Either.Left(s))(Data_Either.Right.create)(fro(s));
+            })(dictChoice);
+        };
+    };
+};
+var nearly = function (x) {
+    return function (f) {
+        return function (dictChoice) {
+            return prism$prime(Data_Function["const"](x))(function ($14) {
+                return Control_MonadZero.guard(Data_Maybe.monadZeroMaybe)(f($14));
+            })(dictChoice);
+        };
+    };
+};
+var only = function (dictEq) {
+    return function (x) {
+        return function (dictChoice) {
+            return nearly(x)(function (v) {
+                return Data_Eq.eq(dictEq)(v)(x);
+            })(dictChoice);
+        };
+    };
+};
+var matching = function (l) {
+    return withPrism(l)(function (v) {
+        return function (f) {
+            return f;
+        };
+    });
+};
+var is = function (dictHeytingAlgebra) {
+    return function (l) {
+        return function ($15) {
+            return Data_Either.either(Data_Function["const"](Data_HeytingAlgebra.ff(dictHeytingAlgebra)))(Data_Function["const"](Data_HeytingAlgebra.tt(dictHeytingAlgebra)))(matching(l)($15));
+        };
+    };
+};
+var isn$primet = function (dictHeytingAlgebra) {
+    return function (l) {
+        return function ($16) {
+            return Data_HeytingAlgebra.not(dictHeytingAlgebra)(is(dictHeytingAlgebra)(l)($16));
+        };
+    };
+};
+var clonePrism = function (l) {
+    return function (dictChoice) {
+        return withPrism(l)(function (x) {
+            return function (y) {
+                return function (p) {
+                    return prism(x)(y)(dictChoice)(p);
+                };
+            };
+        });
+    };
+};
+module.exports = {
+    clonePrism: clonePrism, 
+    is: is, 
+    "isn't": isn$primet, 
+    matching: matching, 
+    nearly: nearly, 
+    only: only, 
+    prism: prism, 
+    "prism'": prism$prime, 
+    review: review, 
+    withPrism: withPrism
+};
+
+},{"../Control.Category":47,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Eq":140,"../Data.Function":151,"../Data.HeytingAlgebra":162,"../Data.Lens.Internal.Market":179,"../Data.Lens.Internal.Tagged":182,"../Data.Lens.Types":194,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Prelude":278}],192:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Monad_State_Class = require("../Control.Monad.State.Class");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Function = require("../Data.Function");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var over = function (l) {
+    return l;
+};
+var set = function (l) {
+    return function (b) {
+        return over(l)(Data_Function["const"](b));
+    };
+};
+var setJust = function (p) {
+    return function ($24) {
+        return set(p)(Data_Maybe.Just.create($24));
+    };
+};
+var subOver = function (dictRing) {
+    return function (p) {
+        return function ($25) {
+            return over(p)(Data_Function.flip(Data_Ring.sub(dictRing))($25));
+        };
+    };
+};
+var mulOver = function (dictSemiring) {
+    return function (p) {
+        return function ($26) {
+            return over(p)(Data_Function.flip(Data_Semiring.mul(dictSemiring))($26));
+        };
+    };
+};
+var modifying = function (dictMonadState) {
+    return function (p) {
+        return function (f) {
+            return Control_Monad_State_Class.modify(dictMonadState)(over(p)(f));
+        };
+    };
+};
+var mulModifying = function (dictMonadState) {
+    return function (dictSemiring) {
+        return function (p) {
+            return function ($27) {
+                return modifying(dictMonadState)(p)(Data_Function.flip(Data_Semiring.mul(dictSemiring))($27));
+            };
+        };
+    };
+};
+var subModifying = function (dictMonadState) {
+    return function (dictRing) {
+        return function (p) {
+            return function ($28) {
+                return modifying(dictMonadState)(p)(Data_Function.flip(Data_Ring.sub(dictRing))($28));
+            };
+        };
+    };
+};
+var iover = function (l) {
+    return function (f) {
+        return l(Data_Lens_Internal_Indexed.Indexed(Data_Tuple.uncurry(f)));
+    };
+};
+var divOver = function (dictEuclideanRing) {
+    return function (p) {
+        return function ($29) {
+            return over(p)(Data_Function.flip(Data_EuclideanRing.div(dictEuclideanRing))($29));
+        };
+    };
+};
+var divModifying = function (dictMonadState) {
+    return function (dictEuclideanRing) {
+        return function (p) {
+            return function ($30) {
+                return modifying(dictMonadState)(p)(Data_Function.flip(Data_EuclideanRing.div(dictEuclideanRing))($30));
+            };
+        };
+    };
+};
+var disjOver = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function ($31) {
+            return over(p)(Data_Function.flip(Data_HeytingAlgebra.disj(dictHeytingAlgebra))($31));
+        };
+    };
+};
+var disjModifying = function (dictMonadState) {
+    return function (dictHeytingAlgebra) {
+        return function (p) {
+            return function ($32) {
+                return modifying(dictMonadState)(p)(Data_Function.flip(Data_HeytingAlgebra.disj(dictHeytingAlgebra))($32));
+            };
+        };
+    };
+};
+var conjOver = function (dictHeytingAlgebra) {
+    return function (p) {
+        return function ($33) {
+            return over(p)(Data_Function.flip(Data_HeytingAlgebra.conj(dictHeytingAlgebra))($33));
+        };
+    };
+};
+var conjModifying = function (dictMonadState) {
+    return function (dictHeytingAlgebra) {
+        return function (p) {
+            return function ($34) {
+                return modifying(dictMonadState)(p)(Data_Function.flip(Data_HeytingAlgebra.conj(dictHeytingAlgebra))($34));
+            };
+        };
+    };
+};
+var assign = function (dictMonadState) {
+    return function (p) {
+        return function (b) {
+            return Control_Monad_State_Class.modify(dictMonadState)(set(p)(b));
+        };
+    };
+};
+var assignJust = function (dictMonadState) {
+    return function (p) {
+        return function ($35) {
+            return assign(dictMonadState)(p)(Data_Maybe.Just.create($35));
+        };
+    };
+};
+var appendOver = function (dictSemigroup) {
+    return function (p) {
+        return function ($36) {
+            return over(p)(Data_Function.flip(Data_Semigroup.append(dictSemigroup))($36));
+        };
+    };
+};
+var appendModifying = function (dictMonadState) {
+    return function (dictSemigroup) {
+        return function (p) {
+            return function ($37) {
+                return modifying(dictMonadState)(p)(Data_Function.flip(Data_Semigroup.append(dictSemigroup))($37));
+            };
+        };
+    };
+};
+var addOver = function (dictSemiring) {
+    return function (p) {
+        return function ($38) {
+            return over(p)(Data_Semiring.add(dictSemiring)($38));
+        };
+    };
+};
+var addModifying = function (dictMonadState) {
+    return function (dictSemiring) {
+        return function (p) {
+            return function ($39) {
+                return modifying(dictMonadState)(p)(Data_Semiring.add(dictSemiring)($39));
+            };
+        };
+    };
+};
+module.exports = {
+    addModifying: addModifying, 
+    addOver: addOver, 
+    appendModifying: appendModifying, 
+    appendOver: appendOver, 
+    assign: assign, 
+    assignJust: assignJust, 
+    conjModifying: conjModifying, 
+    conjOver: conjOver, 
+    disjModifying: disjModifying, 
+    disjOver: disjOver, 
+    divModifying: divModifying, 
+    divOver: divOver, 
+    iover: iover, 
+    modifying: modifying, 
+    mulModifying: mulModifying, 
+    mulOver: mulOver, 
+    over: over, 
+    set: set, 
+    setJust: setJust, 
+    subModifying: subModifying, 
+    subOver: subOver
+};
+
+},{"../Control.Monad.State.Class":81,"../Control.Semigroupoid":93,"../Data.EuclideanRing":142,"../Data.Function":151,"../Data.HeytingAlgebra":162,"../Data.Lens.Internal.Indexed":178,"../Data.Lens.Types":194,"../Data.Maybe":204,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Tuple":255,"../Prelude":278}],193:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Category = require("../Control.Category");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Lens_Indexed = require("../Data.Lens.Indexed");
+var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
+var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
+var Data_Lens_Types = require("../Data.Lens.Types");
+var Data_Monoid_Disj = require("../Data.Monoid.Disj");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor_Star = require("../Data.Profunctor.Star");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var traversed = function (dictTraversable) {
+    return function (dictWander) {
+        return Data_Lens_Internal_Wander.wander(dictWander)(function (dictApplicative) {
+            return Data_Traversable.traverse(dictTraversable)(dictApplicative);
+        });
+    };
+};
+var traverseOf = function (dictApplicative) {
+    return Data_Newtype.under(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.Star);
+};
+var sequenceOf = function (dictApplicative) {
+    return function (t) {
+        return traverseOf(dictApplicative)(t)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var itraverseOf = function (dictApplicative) {
+    return function (t) {
+        return function ($24) {
+            return Data_Newtype.under(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.newtypeStar)(Data_Profunctor_Star.Star)(function ($25) {
+                return t(Data_Lens_Internal_Indexed.Indexed($25));
+            })(Data_Tuple.uncurry($24));
+        };
+    };
+};
+var failover = function (dictAlternative) {
+    return function (t) {
+        return function (f) {
+            return function (s) {
+                var v = Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar)(t(Data_Profunctor_Star.Star(function ($26) {
+                    return Data_Tuple.Tuple.create(true)(f($26));
+                })))(s);
+                if (v.value0) {
+                    return Control_Applicative.pure(dictAlternative.Applicative0())(v.value1);
+                };
+                if (!v.value0) {
+                    return Control_Plus.empty(dictAlternative.Plus1());
+                };
+                throw new Error("Failed pattern match at Data.Lens.Traversal line 55, column 18 - line 57, column 32: " + [ v.constructor.name ]);
+            };
+        };
+    };
+};
+var elementsOf = function (dictWander) {
+    return function (tr) {
+        return function (pr) {
+            return Data_Lens_Indexed.iwander(function (dictApplicative) {
+                return function (f) {
+                    return Data_Newtype.unwrap(Data_Profunctor_Star.newtypeStar)(tr(Data_Lens_Internal_Wander.wanderStar(dictApplicative))(Data_Lens_Internal_Indexed.Indexed(Data_Profunctor_Star.Star(function (v) {
+                        var $21 = pr(v.value0);
+                        if ($21) {
+                            return f(v.value0)(v.value1);
+                        };
+                        return Control_Applicative.pure(dictApplicative)(v.value1);
+                    }))));
+                };
+            })(dictWander);
+        };
+    };
+};
+var element = function (dictWander) {
+    return function (n) {
+        return function (tr) {
+            return Data_Lens_Indexed.unIndex((dictWander.Choice1()).Profunctor0())(elementsOf(dictWander)(function (dictWander1) {
+                return Data_Lens_Indexed.positions(function (dictWander2) {
+                    return tr(dictWander2);
+                })(dictWander1);
+            })(function (v) {
+                return v === n;
+            }));
+        };
+    };
+};
+module.exports = {
+    element: element, 
+    elementsOf: elementsOf, 
+    failover: failover, 
+    itraverseOf: itraverseOf, 
+    sequenceOf: sequenceOf, 
+    traverseOf: traverseOf, 
+    traversed: traversed
+};
+
+},{"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Category":47,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Function":151,"../Data.Lens.Indexed":174,"../Data.Lens.Internal.Indexed":178,"../Data.Lens.Internal.Wander":183,"../Data.Lens.Types":194,"../Data.Monoid.Disj":209,"../Data.Newtype":215,"../Data.Profunctor.Star":229,"../Data.Traversable":254,"../Data.Tuple":255,"../Prelude":278}],194:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Lens_Internal_Exchange = require("../Data.Lens.Internal.Exchange");
+var Data_Lens_Internal_Forget = require("../Data.Lens.Internal.Forget");
+var Data_Lens_Internal_Grating = require("../Data.Lens.Internal.Grating");
+var Data_Lens_Internal_Indexed = require("../Data.Lens.Internal.Indexed");
+var Data_Lens_Internal_Market = require("../Data.Lens.Internal.Market");
+var Data_Lens_Internal_Re = require("../Data.Lens.Internal.Re");
+var Data_Lens_Internal_Shop = require("../Data.Lens.Internal.Shop");
+var Data_Lens_Internal_Tagged = require("../Data.Lens.Internal.Tagged");
+var Data_Lens_Internal_Wander = require("../Data.Lens.Internal.Wander");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+module.exports = {};
+
+},{"../Data.Lens.Internal.Exchange":175,"../Data.Lens.Internal.Forget":176,"../Data.Lens.Internal.Grating":177,"../Data.Lens.Internal.Indexed":178,"../Data.Lens.Internal.Market":179,"../Data.Lens.Internal.Re":180,"../Data.Lens.Internal.Shop":181,"../Data.Lens.Internal.Tagged":182,"../Data.Lens.Internal.Wander":183,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Data.Profunctor.Closed":225,"../Data.Profunctor.Strong":230,"../Data.Tuple":255}],195:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Lens_Common = require("../Data.Lens.Common");
+var Data_Lens_Fold = require("../Data.Lens.Fold");
+var Data_Lens_Getter = require("../Data.Lens.Getter");
+var Data_Lens_Grate = require("../Data.Lens.Grate");
+var Data_Lens_Iso = require("../Data.Lens.Iso");
+var Data_Lens_Lens = require("../Data.Lens.Lens");
+var Data_Lens_Prism = require("../Data.Lens.Prism");
+var Data_Lens_Setter = require("../Data.Lens.Setter");
+var Data_Lens_Traversal = require("../Data.Lens.Traversal");
+var Data_Lens_Types = require("../Data.Lens.Types");
+module.exports = {};
+
+},{"../Data.Lens.Common":170,"../Data.Lens.Fold":171,"../Data.Lens.Getter":172,"../Data.Lens.Grate":173,"../Data.Lens.Iso":185,"../Data.Lens.Lens":188,"../Data.Lens.Prism":191,"../Data.Lens.Setter":192,"../Data.Lens.Traversal":193,"../Data.Lens.Types":194}],196:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad = require("../Control.Monad");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Lazy = require("../Data.Lazy");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_NonEmpty = require("../Data.NonEmpty");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Prelude = require("../Prelude");
+var List = function (x) {
+    return x;
+};
+var Nil = (function () {
+    function Nil() {
+
+    };
+    Nil.value = new Nil();
+    return Nil;
+})();
+var Cons = (function () {
+    function Cons(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Cons.create = function (value0) {
+        return function (value1) {
+            return new Cons(value0, value1);
+        };
+    };
+    return Cons;
+})();
+var NonEmptyList = function (x) {
+    return x;
+};
+var nil = List(Data_Lazy.defer(function (v) {
+    return Nil.value;
+}));
+var newtypeNonEmptyList = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, NonEmptyList);
+var newtypeList = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, List);
+var step = function ($165) {
+    return Data_Lazy.force(Data_Newtype.unwrap(newtypeList)($165));
+};
+var semigroupList = new Data_Semigroup.Semigroup(function (xs) {
+    return function (ys) {
+        var go = function (v) {
+            if (v instanceof Nil) {
+                return step(ys);
+            };
+            if (v instanceof Cons) {
+                return new Cons(v.value0, Data_Semigroup.append(semigroupList)(v.value1)(ys));
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy.Types line 96, column 5 - line 96, column 21: " + [ v.constructor.name ]);
+        };
+        return Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(newtypeList)(xs));
+    };
+});
+var showList = function (dictShow) {
+    return new Data_Show.Show(function (xs) {
+        var go = function (v) {
+            if (v instanceof Nil) {
+                return "Nil";
+            };
+            if (v instanceof Cons) {
+                return "(Cons " + (Data_Show.show(dictShow)(v.value0) + (" " + (go(step(v.value1)) + ")")));
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy.Types line 60, column 13 - line 65, column 1: " + [ v.constructor.name ]);
+        };
+        return "fromStrict (" + (go(step(xs)) + ")");
+    });
+};
+var showNonEmptyList = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(NonEmptyList " + (Data_Show.show(Data_Lazy.showLazy(Data_NonEmpty.showNonEmpty(dictShow)(showList(dictShow))))(v) + ")");
+    });
+};
+var monoidList = new Data_Monoid.Monoid(function () {
+    return semigroupList;
+}, nil);
+var lazyList = new Control_Lazy.Lazy(function (f) {
+    return List(Data_Lazy.defer(function ($166) {
+        return step(f($166));
+    }));
+});
+var functorList = new Data_Functor.Functor(function (f) {
+    return function (xs) {
+        var go = function (v) {
+            if (v instanceof Nil) {
+                return Nil.value;
+            };
+            if (v instanceof Cons) {
+                return new Cons(f(v.value0), Data_Functor.map(functorList)(f)(v.value1));
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy.Types line 105, column 5 - line 105, column 17: " + [ v.constructor.name ]);
+        };
+        return Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(newtypeList)(xs));
+    };
+});
+var functorNonEmptyList = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return Data_Functor.map(Data_Lazy.functorLazy)(Data_Functor.map(Data_NonEmpty.functorNonEmpty(functorList))(f))(v);
+    };
+});
+var eq1List = new Data_Eq.Eq1(function (dictEq) {
+    return function (xs) {
+        return function (ys) {
+            var go = function (__copy_v) {
+                return function (__copy_v1) {
+                    var __tco_v = __copy_v;
+                    var __tco_done = false;
+                    var __tco_result;
+                    function __tco_loop(v, v1) {
+                        if (v instanceof Nil && v1 instanceof Nil) {
+                            __tco_done = true;
+                            return true;
+                        };
+                        if (v instanceof Cons && (v1 instanceof Cons && Data_Eq.eq(dictEq)(v.value0)(v1.value0))) {
+                            __tco_v = step(v.value1);
+                            __copy_v1 = step(v1.value1);
+                            return;
+                        };
+                        __tco_done = true;
+                        return false;
+                    };
+                    while (!__tco_done) {
+                        __tco_result = __tco_loop(__tco_v, __copy_v1);
+                    };
+                    return __tco_result;
+                };
+            };
+            return go(step(xs))(step(ys));
+        };
+    };
+});
+var eqList = function (dictEq) {
+    return new Data_Eq.Eq(Data_Eq.eq1(eq1List)(dictEq));
+};
+var eqNonEmptyList = function (dictEq) {
+    return Data_Lazy.eqLazy(Data_NonEmpty.eqNonEmpty(eq1List)(dictEq));
+};
+var ord1List = new Data_Ord.Ord1(function () {
+    return eq1List;
+}, function (dictOrd) {
+    return function (xs) {
+        return function (ys) {
+            var go = function (__copy_v) {
+                return function (__copy_v1) {
+                    var __tco_v = __copy_v;
+                    var __tco_done = false;
+                    var __tco_result;
+                    function __tco_loop(v, v1) {
+                        if (v instanceof Nil && v1 instanceof Nil) {
+                            __tco_done = true;
+                            return Data_Ordering.EQ.value;
+                        };
+                        if (v instanceof Nil) {
+                            __tco_done = true;
+                            return Data_Ordering.LT.value;
+                        };
+                        if (v1 instanceof Nil) {
+                            __tco_done = true;
+                            return Data_Ordering.GT.value;
+                        };
+                        if (v instanceof Cons && v1 instanceof Cons) {
+                            var v2 = Data_Ord.compare(dictOrd)(v.value0)(v1.value0);
+                            if (v2 instanceof Data_Ordering.EQ) {
+                                __tco_v = step(v.value1);
+                                __copy_v1 = step(v1.value1);
+                                return;
+                            };
+                            __tco_done = true;
+                            return v2;
+                        };
+                        throw new Error("Failed pattern match at Data.List.Lazy.Types line 80, column 20 - line 88, column 23: " + [ v.constructor.name, v1.constructor.name ]);
+                    };
+                    while (!__tco_done) {
+                        __tco_result = __tco_loop(__tco_v, __copy_v1);
+                    };
+                    return __tco_result;
+                };
+            };
+            return go(step(xs))(step(ys));
+        };
+    };
+});
+var ordList = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqList(dictOrd.Eq0());
+    }, Data_Ord.compare1(ord1List)(dictOrd));
+};
+var ordNonEmptyList = function (dictOrd) {
+    return Data_Lazy.ordLazy(Data_NonEmpty.ordNonEmpty(ord1List)(dictOrd));
+};
+var cons = function (x) {
+    return function (xs) {
+        return List(Data_Lazy.defer(function (v) {
+            return new Cons(x, xs);
+        }));
+    };
+};
+var foldableList = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return Data_Foldable.foldl(foldableList)(function (b) {
+            return function (a) {
+                return Data_Semigroup.append(dictMonoid.Semigroup0())(b)(f(a));
+            };
+        })(Data_Monoid.mempty(dictMonoid));
+    };
+}, function (op) {
+    var go = function (__copy_b) {
+        return function (__copy_xs) {
+            var __tco_b = __copy_b;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(b, xs) {
+                var v = step(xs);
+                if (v instanceof Nil) {
+                    __tco_done = true;
+                    return b;
+                };
+                if (v instanceof Cons) {
+                    __tco_b = op(b)(v.value0);
+                    __copy_xs = v.value1;
+                    return;
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy.Types line 117, column 7 - line 119, column 40: " + [ v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_b, __copy_xs);
+            };
+            return __tco_result;
+        };
+    };
+    return go;
+}, function (op) {
+    return function (z) {
+        return function (xs) {
+            var rev = Data_Foldable.foldl(foldableList)(Data_Function.flip(cons))(nil);
+            return Data_Foldable.foldl(foldableList)(Data_Function.flip(op))(z)(rev(xs));
+        };
+    };
+});
+var extendList = new Control_Extend.Extend(function () {
+    return functorList;
+}, function (f) {
+    return function (l) {
+        var go = function (a) {
+            return function (v) {
+                var acc$prime = cons(a)(v.acc);
+                return {
+                    val: cons(f(acc$prime))(v.val), 
+                    acc: acc$prime
+                };
+            };
+        };
+        var v = step(l);
+        if (v instanceof Nil) {
+            return nil;
+        };
+        if (v instanceof Cons) {
+            return cons(f(l))((Data_Foldable.foldr(foldableList)(go)({
+                val: nil, 
+                acc: nil
+            })(v.value1)).val);
+        };
+        throw new Error("Failed pattern match at Data.List.Lazy.Types line 163, column 5 - line 166, column 55: " + [ v.constructor.name ]);
+    };
+});
+var extendNonEmptyList = new Control_Extend.Extend(function () {
+    return functorNonEmptyList;
+}, function (f) {
+    return function (v) {
+        var go = function (a) {
+            return function (v1) {
+                return {
+                    val: cons(f(Data_Lazy.defer(function (v2) {
+                        return new Data_NonEmpty.NonEmpty(a, v1.acc);
+                    })))(v1.val), 
+                    acc: cons(a)(v1.acc)
+                };
+            };
+        };
+        var v1 = Data_Lazy.force(v);
+        return NonEmptyList(Data_Lazy.defer(function (v2) {
+            return new Data_NonEmpty.NonEmpty(f(v), (Data_Foldable.foldr(foldableList)(go)({
+                val: nil, 
+                acc: nil
+            })(v1.value1)).val);
+        }));
+    };
+});
+var foldableNonEmptyList = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return Data_Foldable.foldMap(Data_NonEmpty.foldableNonEmpty(foldableList))(dictMonoid)(f)(Data_Lazy.force(v));
+        };
+    };
+}, function (f) {
+    return function (b) {
+        return function (v) {
+            return Data_Foldable.foldl(Data_NonEmpty.foldableNonEmpty(foldableList))(f)(b)(Data_Lazy.force(v));
+        };
+    };
+}, function (f) {
+    return function (b) {
+        return function (v) {
+            return Data_Foldable.foldr(Data_NonEmpty.foldableNonEmpty(foldableList))(f)(b)(Data_Lazy.force(v));
+        };
+    };
+});
+var toList = function (v) {
+    return Control_Lazy.defer(lazyList)(function (v1) {
+        var v2 = Data_Lazy.force(v);
+        return cons(v2.value0)(v2.value1);
+    });
+};
+var semigroupNonEmptyList = new Data_Semigroup.Semigroup(function (v) {
+    return function (as$prime) {
+        var v1 = Data_Lazy.force(v);
+        return Data_Lazy.defer(function (v2) {
+            return new Data_NonEmpty.NonEmpty(v1.value0, Data_Semigroup.append(semigroupList)(v1.value1)(toList(as$prime)));
+        });
+    };
+});
+var traversableList = new Data_Traversable.Traversable(function () {
+    return foldableList;
+}, function () {
+    return functorList;
+}, function (dictApplicative) {
+    return Data_Traversable.traverse(traversableList)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
+}, function (dictApplicative) {
+    return function (f) {
+        return Data_Foldable.foldr(foldableList)(function (a) {
+            return function (b) {
+                return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(cons)(f(a)))(b);
+            };
+        })(Control_Applicative.pure(dictApplicative)(nil));
+    };
+});
+var traversableNonEmptyList = new Data_Traversable.Traversable(function () {
+    return foldableNonEmptyList;
+}, function () {
+    return functorNonEmptyList;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(function (xxs) {
+            return NonEmptyList(Data_Lazy.defer(function (v1) {
+                return xxs;
+            }));
+        })(Data_Traversable.sequence(Data_NonEmpty.traversableNonEmpty(traversableList))(dictApplicative)(Data_Lazy.force(v)));
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(function (xxs) {
+                return NonEmptyList(Data_Lazy.defer(function (v1) {
+                    return xxs;
+                }));
+            })(Data_Traversable.traverse(Data_NonEmpty.traversableNonEmpty(traversableList))(dictApplicative)(f)(Data_Lazy.force(v)));
+        };
+    };
+});
+var unfoldableList = new Data_Unfoldable.Unfoldable((function () {
+    var go = function (f) {
+        return function (b) {
+            return Control_Lazy.defer(lazyList)(function (v) {
+                var v1 = f(b);
+                if (v1 instanceof Data_Maybe.Nothing) {
+                    return nil;
+                };
+                if (v1 instanceof Data_Maybe.Just) {
+                    return cons(v1.value0.value0)(go(f)(v1.value0.value1));
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy.Types line 125, column 28 - line 127, column 39: " + [ v1.constructor.name ]);
+            });
+        };
+    };
+    return go;
+})());
+var comonadNonEmptyList = new Control_Comonad.Comonad(function () {
+    return extendNonEmptyList;
+}, function (v) {
+    return Data_NonEmpty.head(Data_Lazy.force(v));
+});
+var monadList = new Control_Monad.Monad(function () {
+    return applicativeList;
+}, function () {
+    return bindList;
+});
+var bindList = new Control_Bind.Bind(function () {
+    return applyList;
+}, function (xs) {
+    return function (f) {
+        var go = function (v) {
+            if (v instanceof Nil) {
+                return Nil.value;
+            };
+            if (v instanceof Cons) {
+                return step(Data_Semigroup.append(semigroupList)(f(v.value0))(Control_Bind.bind(bindList)(v.value1)(f)));
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy.Types line 144, column 5 - line 144, column 17: " + [ v.constructor.name ]);
+        };
+        return Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(newtypeList)(xs));
+    };
+});
+var applyList = new Control_Apply.Apply(function () {
+    return functorList;
+}, Control_Monad.ap(monadList));
+var applicativeList = new Control_Applicative.Applicative(function () {
+    return applyList;
+}, function (a) {
+    return cons(a)(nil);
+});
+var applyNonEmptyList = new Control_Apply.Apply(function () {
+    return functorNonEmptyList;
+}, function (v) {
+    return function (v1) {
+        var v2 = Data_Lazy.force(v1);
+        var v3 = Data_Lazy.force(v);
+        return Data_Lazy.defer(function (v4) {
+            return new Data_NonEmpty.NonEmpty(v3.value0(v2.value0), Data_Semigroup.append(semigroupList)(Control_Apply.apply(applyList)(v3.value1)(cons(v2.value0)(nil)))(Control_Apply.apply(applyList)(cons(v3.value0)(v3.value1))(v2.value1)));
+        });
+    };
+});
+var bindNonEmptyList = new Control_Bind.Bind(function () {
+    return applyNonEmptyList;
+}, function (v) {
+    return function (f) {
+        var v1 = Data_Lazy.force(v);
+        var v2 = Data_Lazy.force(Data_Newtype.unwrap(newtypeNonEmptyList)(f(v1.value0)));
+        return Data_Lazy.defer(function (v3) {
+            return new Data_NonEmpty.NonEmpty(v2.value0, Data_Semigroup.append(semigroupList)(v2.value1)(Control_Bind.bind(bindList)(v1.value1)(function ($167) {
+                return toList(f($167));
+            })));
+        });
+    };
+});
+var altNonEmptyList = new Control_Alt.Alt(function () {
+    return functorNonEmptyList;
+}, Data_Semigroup.append(semigroupNonEmptyList));
+var altList = new Control_Alt.Alt(function () {
+    return functorList;
+}, Data_Semigroup.append(semigroupList));
+var plusList = new Control_Plus.Plus(function () {
+    return altList;
+}, nil);
+var alternativeList = new Control_Alternative.Alternative(function () {
+    return applicativeList;
+}, function () {
+    return plusList;
+});
+var monadZeroList = new Control_MonadZero.MonadZero(function () {
+    return alternativeList;
+}, function () {
+    return monadList;
+});
+var monadPlusList = new Control_MonadPlus.MonadPlus(function () {
+    return monadZeroList;
+});
+var applicativeNonEmptyList = new Control_Applicative.Applicative(function () {
+    return applyNonEmptyList;
+}, function (a) {
+    return Data_Lazy.defer(function (v) {
+        return Data_NonEmpty.singleton(plusList)(a);
+    });
+});
+var monadNonEmptyList = new Control_Monad.Monad(function () {
+    return applicativeNonEmptyList;
+}, function () {
+    return bindNonEmptyList;
+});
+module.exports = {
+    List: List, 
+    NonEmptyList: NonEmptyList, 
+    Nil: Nil, 
+    Cons: Cons, 
+    cons: cons, 
+    nil: nil, 
+    step: step, 
+    toList: toList, 
+    newtypeList: newtypeList, 
+    showList: showList, 
+    eqList: eqList, 
+    eq1List: eq1List, 
+    ordList: ordList, 
+    ord1List: ord1List, 
+    lazyList: lazyList, 
+    semigroupList: semigroupList, 
+    monoidList: monoidList, 
+    functorList: functorList, 
+    foldableList: foldableList, 
+    unfoldableList: unfoldableList, 
+    traversableList: traversableList, 
+    applyList: applyList, 
+    applicativeList: applicativeList, 
+    bindList: bindList, 
+    monadList: monadList, 
+    altList: altList, 
+    plusList: plusList, 
+    alternativeList: alternativeList, 
+    monadZeroList: monadZeroList, 
+    monadPlusList: monadPlusList, 
+    extendList: extendList, 
+    newtypeNonEmptyList: newtypeNonEmptyList, 
+    eqNonEmptyList: eqNonEmptyList, 
+    ordNonEmptyList: ordNonEmptyList, 
+    showNonEmptyList: showNonEmptyList, 
+    functorNonEmptyList: functorNonEmptyList, 
+    applyNonEmptyList: applyNonEmptyList, 
+    applicativeNonEmptyList: applicativeNonEmptyList, 
+    bindNonEmptyList: bindNonEmptyList, 
+    monadNonEmptyList: monadNonEmptyList, 
+    altNonEmptyList: altNonEmptyList, 
+    extendNonEmptyList: extendNonEmptyList, 
+    comonadNonEmptyList: comonadNonEmptyList, 
+    semigroupNonEmptyList: semigroupNonEmptyList, 
+    foldableNonEmptyList: foldableNonEmptyList, 
+    traversableNonEmptyList: traversableNonEmptyList
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Lazy":51,"../Control.Monad":87,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.Lazy":169,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.NonEmpty":216,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Prelude":278}],197:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Lazy = require("../Data.Lazy");
+var Data_List_Lazy_Types = require("../Data.List.Lazy.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_NonEmpty = require("../Data.NonEmpty");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Prelude = require("../Prelude");
+var Pattern = function (x) {
+    return x;
+};
+var zipWith = function (f) {
+    return function (xs) {
+        return function (ys) {
+            var go = function (v) {
+                return function (v1) {
+                    if (v instanceof Data_List_Lazy_Types.Nil) {
+                        return Data_List_Lazy_Types.Nil.value;
+                    };
+                    if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                        return Data_List_Lazy_Types.Nil.value;
+                    };
+                    if (v instanceof Data_List_Lazy_Types.Cons && v1 instanceof Data_List_Lazy_Types.Cons) {
+                        return new Data_List_Lazy_Types.Cons(f(v.value0)(v1.value0), zipWith(f)(v.value1)(v1.value1));
+                    };
+                    throw new Error("Failed pattern match at Data.List.Lazy line 692, column 3 - line 692, column 17: " + [ v.constructor.name, v1.constructor.name ]);
+                };
+            };
+            return Control_Apply.apply(Data_Lazy.applyLazy)(Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(xs)))(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(ys));
+        };
+    };
+};
+var zipWithA = function (dictApplicative) {
+    return function (f) {
+        return function (xs) {
+            return function (ys) {
+                return Data_Traversable.sequence(Data_List_Lazy_Types.traversableList)(dictApplicative)(zipWith(f)(xs)(ys));
+            };
+        };
+    };
+};
+var zip = zipWith(Data_Tuple.Tuple.create);
+var updateAt = function (n) {
+    return function (x) {
+        return function (xs) {
+            var go = function (v) {
+                return function (v1) {
+                    if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                        return Data_List_Lazy_Types.Nil.value;
+                    };
+                    if (v === 0 && v1 instanceof Data_List_Lazy_Types.Cons) {
+                        return new Data_List_Lazy_Types.Cons(x, v1.value1);
+                    };
+                    if (v1 instanceof Data_List_Lazy_Types.Cons) {
+                        return new Data_List_Lazy_Types.Cons(v1.value0, updateAt(v - 1 | 0)(x)(v1.value1));
+                    };
+                    throw new Error("Failed pattern match at Data.List.Lazy line 366, column 3 - line 366, column 17: " + [ v.constructor.name, v1.constructor.name ]);
+                };
+            };
+            return Data_Functor.map(Data_Lazy.functorLazy)(go(n))(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(xs));
+        };
+    };
+};
+var unzip = Data_Foldable.foldr(Data_List_Lazy_Types.foldableList)(function (v) {
+    return function (v1) {
+        return new Data_Tuple.Tuple(Data_List_Lazy_Types.cons(v.value0)(v1.value0), Data_List_Lazy_Types.cons(v.value1)(v1.value1));
+    };
+})(new Data_Tuple.Tuple(Data_List_Lazy_Types.nil, Data_List_Lazy_Types.nil));
+var uncons = function (xs) {
+    var v = Data_List_Lazy_Types.step(xs);
+    if (v instanceof Data_List_Lazy_Types.Nil) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Data_List_Lazy_Types.Cons) {
+        return new Data_Maybe.Just({
+            head: v.value0, 
+            tail: v.value1
+        });
+    };
+    throw new Error("Failed pattern match at Data.List.Lazy line 284, column 13 - line 286, column 44: " + [ v.constructor.name ]);
+};
+var toUnfoldable = function (dictUnfoldable) {
+    return Data_Unfoldable.unfoldr(dictUnfoldable)(function (xs) {
+        return Data_Functor.map(Data_Maybe.functorMaybe)(function (rec) {
+            return new Data_Tuple.Tuple(rec.head, rec.tail);
+        })(uncons(xs));
+    });
+};
+var takeWhile = function (p) {
+    var go = function (v) {
+        if (v instanceof Data_List_Lazy_Types.Cons && p(v.value0)) {
+            return new Data_List_Lazy_Types.Cons(v.value0, takeWhile(p)(v.value1));
+        };
+        return Data_List_Lazy_Types.Nil.value;
+    };
+    return function ($244) {
+        return Data_List_Lazy_Types.List(Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)($244)));
+    };
+};
+var take = function (n) {
+    var go = function (v) {
+        return function (v1) {
+            if (v <= 0) {
+                return Data_List_Lazy_Types.Nil.value;
+            };
+            if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                return Data_List_Lazy_Types.Nil.value;
+            };
+            if (v1 instanceof Data_List_Lazy_Types.Cons) {
+                return new Data_List_Lazy_Types.Cons(v1.value0, take(v - 1 | 0)(v1.value1));
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy line 515, column 3 - line 515, column 24: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    };
+    return function ($245) {
+        return Data_List_Lazy_Types.List(Data_Functor.map(Data_Lazy.functorLazy)(go(n))(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)($245)));
+    };
+};
+var tail = function (xs) {
+    return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
+        return v.tail;
+    })(uncons(xs));
+};
+var stripPrefix = function (dictEq) {
+    return function (v) {
+        return function (s) {
+            var go = function (prefix) {
+                return function (input) {
+                    var v1 = Data_List_Lazy_Types.step(prefix);
+                    if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                        return Data_Maybe.Just.create(new Control_Monad_Rec_Class.Done(input));
+                    };
+                    if (v1 instanceof Data_List_Lazy_Types.Cons) {
+                        var v2 = Data_List_Lazy_Types.step(input);
+                        if (v2 instanceof Data_List_Lazy_Types.Cons && Data_Eq.eq(dictEq)(v1.value0)(v2.value0)) {
+                            return Data_Maybe.Just.create(new Control_Monad_Rec_Class.Loop({
+                                a: v1.value1, 
+                                b: v2.value1
+                            }));
+                        };
+                        return Data_Maybe.Nothing.value;
+                    };
+                    throw new Error("Failed pattern match at Data.List.Lazy line 498, column 21 - line 502, column 19: " + [ v1.constructor.name ]);
+                };
+            };
+            return Control_Monad_Rec_Class.tailRecM2(Control_Monad_Rec_Class.monadRecMaybe)(go)(v)(s);
+        };
+    };
+};
+var span = function (p) {
+    return function (xs) {
+        var v = uncons(xs);
+        if (v instanceof Data_Maybe.Just && p(v.value0.head)) {
+            var v1 = span(p)(v.value0.tail);
+            return {
+                init: Data_List_Lazy_Types.cons(v.value0.head)(v1.init), 
+                rest: v1.rest
+            };
+        };
+        return {
+            init: Data_List_Lazy_Types.nil, 
+            rest: xs
+        };
+    };
+};
+var snoc = function (xs) {
+    return function (x) {
+        return Data_Foldable.foldr(Data_List_Lazy_Types.foldableList)(Data_List_Lazy_Types.cons)(Data_List_Lazy_Types.cons(x)(Data_List_Lazy_Types.nil))(xs);
+    };
+};
+var singleton = function (a) {
+    return Data_List_Lazy_Types.cons(a)(Data_List_Lazy_Types.nil);
+};
+var showPattern = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Pattern " + (Data_Show.show(Data_List_Lazy_Types.showList(dictShow))(v) + ")");
+    });
+};
+var reverse = function (xs) {
+    return Control_Lazy.defer(Data_List_Lazy_Types.lazyList)(function (v) {
+        return Data_Foldable.foldl(Data_List_Lazy_Types.foldableList)(Data_Function.flip(Data_List_Lazy_Types.cons))(Data_List_Lazy_Types.nil)(xs);
+    });
+};
+var replicateM = function (dictMonad) {
+    return function (n) {
+        return function (m) {
+            if (n < 1) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(Data_List_Lazy_Types.nil);
+            };
+            if (Data_Boolean.otherwise) {
+                return Control_Bind.bind(dictMonad.Bind1())(m)(function (v) {
+                    return Control_Bind.bind(dictMonad.Bind1())(replicateM(dictMonad)(n - 1 | 0)(m))(function (v1) {
+                        return Control_Applicative.pure(dictMonad.Applicative0())(Data_List_Lazy_Types.cons(v)(v1));
+                    });
+                });
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy line 161, column 1 - line 166, column 23: " + [ n.constructor.name, m.constructor.name ]);
+        };
+    };
+};
+var repeat = function (x) {
+    return Control_Lazy.fix(Data_List_Lazy_Types.lazyList)(function (xs) {
+        return Data_List_Lazy_Types.cons(x)(xs);
+    });
+};
+var replicate = function (i) {
+    return function (xs) {
+        return take(i)(repeat(xs));
+    };
+};
+var range = function (start) {
+    return function (end) {
+        if (start > end) {
+            var g = function (x) {
+                if (x >= end) {
+                    return new Data_Maybe.Just(new Data_Tuple.Tuple(x, x - 1 | 0));
+                };
+                if (Data_Boolean.otherwise) {
+                    return Data_Maybe.Nothing.value;
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 147, column 13 - line 148, column 38: " + [ x.constructor.name ]);
+            };
+            return Data_Unfoldable.unfoldr(Data_List_Lazy_Types.unfoldableList)(g)(start);
+        };
+        if (Data_Boolean.otherwise) {
+            var f = function (x) {
+                if (x <= end) {
+                    return new Data_Maybe.Just(new Data_Tuple.Tuple(x, x + 1 | 0));
+                };
+                if (Data_Boolean.otherwise) {
+                    return Data_Maybe.Nothing.value;
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 152, column 5 - line 153, column 30: " + [ x.constructor.name ]);
+            };
+            return Data_Unfoldable.unfoldr(Data_List_Lazy_Types.unfoldableList)(f)(start);
+        };
+        throw new Error("Failed pattern match at Data.List.Lazy line 145, column 1 - line 153, column 30: " + [ start.constructor.name, end.constructor.name ]);
+    };
+};
+var partition = function (f) {
+    var go = function (x) {
+        return function (v) {
+            var $149 = f(x);
+            if ($149) {
+                return {
+                    yes: Data_List_Lazy_Types.cons(x)(v.yes), 
+                    no: v.no
+                };
+            };
+            return {
+                yes: v.yes, 
+                no: Data_List_Lazy_Types.cons(x)(v.no)
+            };
+        };
+    };
+    return Data_Foldable.foldr(Data_List_Lazy_Types.foldableList)(go)({
+        yes: Data_List_Lazy_Types.nil, 
+        no: Data_List_Lazy_Types.nil
+    });
+};
+var $$null = function ($246) {
+    return Data_Maybe.isNothing(uncons($246));
+};
+var newtypePattern = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Pattern);
+var mapMaybe = function (f) {
+    var go = function (__copy_v) {
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v) {
+            if (v instanceof Data_List_Lazy_Types.Nil) {
+                __tco_done = true;
+                return Data_List_Lazy_Types.Nil.value;
+            };
+            if (v instanceof Data_List_Lazy_Types.Cons) {
+                var v1 = f(v.value0);
+                if (v1 instanceof Data_Maybe.Nothing) {
+                    __copy_v = Data_List_Lazy_Types.step(v.value1);
+                    return;
+                };
+                if (v1 instanceof Data_Maybe.Just) {
+                    __tco_done = true;
+                    return new Data_List_Lazy_Types.Cons(v1.value0, mapMaybe(f)(v.value1));
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 459, column 5 - line 461, column 39: " + [ v1.constructor.name ]);
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy line 455, column 14 - line 461, column 39: " + [ v.constructor.name ]);
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    return function ($247) {
+        return Data_List_Lazy_Types.List(Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)($247)));
+    };
+};
+var some = function (dictAlternative) {
+    return function (dictLazy) {
+        return function (v) {
+            return Control_Apply.apply((dictAlternative.Applicative0()).Apply0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())(Data_List_Lazy_Types.cons)(v))(Control_Lazy.defer(dictLazy)(function (v1) {
+                return many(dictAlternative)(dictLazy)(v);
+            }));
+        };
+    };
+};
+var many = function (dictAlternative) {
+    return function (dictLazy) {
+        return function (v) {
+            return Control_Alt.alt((dictAlternative.Plus1()).Alt0())(some(dictAlternative)(dictLazy)(v))(Control_Applicative.pure(dictAlternative.Applicative0())(Data_List_Lazy_Types.nil));
+        };
+    };
+};
+var length = Data_Foldable.foldl(Data_List_Lazy_Types.foldableList)(function (l) {
+    return function (v) {
+        return l + 1 | 0;
+    };
+})(0);
+var last = (function () {
+    var go = function (__copy_v) {
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v) {
+            if (v instanceof Data_List_Lazy_Types.Cons) {
+                if ($$null(v.value1)) {
+                    __tco_done = true;
+                    return new Data_Maybe.Just(v.value0);
+                };
+                if (Data_Boolean.otherwise) {
+                    __copy_v = Data_List_Lazy_Types.step(v.value1);
+                    return;
+                };
+            };
+            __tco_done = true;
+            return Data_Maybe.Nothing.value;
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    return function ($248) {
+        return go(Data_List_Lazy_Types.step($248));
+    };
+})();
+var iterate = function (f) {
+    return function (x) {
+        return Control_Lazy.fix(Data_List_Lazy_Types.lazyList)(function (xs) {
+            return Data_List_Lazy_Types.cons(x)(Data_Functor.map(Data_List_Lazy_Types.functorList)(f)(xs));
+        });
+    };
+};
+var insertAt = function (v) {
+    return function (x) {
+        return function (xs) {
+            if (v === 0) {
+                return Data_List_Lazy_Types.cons(x)(xs);
+            };
+            var go = function (v1) {
+                if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                    return new Data_List_Lazy_Types.Cons(x, Data_List_Lazy_Types.nil);
+                };
+                if (v1 instanceof Data_List_Lazy_Types.Cons) {
+                    return new Data_List_Lazy_Types.Cons(v1.value0, insertAt(v - 1 | 0)(x)(v1.value1));
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 339, column 3 - line 339, column 22: " + [ v1.constructor.name ]);
+            };
+            return Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(xs));
+        };
+    };
+};
+var init = (function () {
+    var go = function (v) {
+        if (v instanceof Data_List_Lazy_Types.Cons) {
+            if ($$null(v.value1)) {
+                return new Data_Maybe.Just(Data_List_Lazy_Types.nil);
+            };
+            if (Data_Boolean.otherwise) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(Data_List_Lazy_Types.cons(v.value0))(go(Data_List_Lazy_Types.step(v.value1)));
+            };
+        };
+        return Data_Maybe.Nothing.value;
+    };
+    return function ($249) {
+        return go(Data_List_Lazy_Types.step($249));
+    };
+})();
+var index = function (xs) {
+    var go = function (__copy_v) {
+        return function (__copy_v1) {
+            var __tco_v = __copy_v;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(v, v1) {
+                if (v instanceof Data_List_Lazy_Types.Nil) {
+                    __tco_done = true;
+                    return Data_Maybe.Nothing.value;
+                };
+                if (v instanceof Data_List_Lazy_Types.Cons && v1 === 0) {
+                    __tco_done = true;
+                    return new Data_Maybe.Just(v.value0);
+                };
+                if (v instanceof Data_List_Lazy_Types.Cons) {
+                    __tco_v = Data_List_Lazy_Types.step(v.value1);
+                    __copy_v1 = v1 - 1 | 0;
+                    return;
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 296, column 12 - line 300, column 42: " + [ v.constructor.name, v1.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_v, __copy_v1);
+            };
+            return __tco_result;
+        };
+    };
+    return go(Data_List_Lazy_Types.step(xs));
+};
+var head = function (xs) {
+    return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
+        return v.head;
+    })(uncons(xs));
+};
+var transpose = function (xs) {
+    var v = uncons(xs);
+    if (v instanceof Data_Maybe.Nothing) {
+        return xs;
+    };
+    if (v instanceof Data_Maybe.Just) {
+        var v1 = uncons(v.value0.head);
+        if (v1 instanceof Data_Maybe.Nothing) {
+            return transpose(v.value0.tail);
+        };
+        if (v1 instanceof Data_Maybe.Just) {
+            return Data_List_Lazy_Types.cons(Data_List_Lazy_Types.cons(v1.value0.head)(mapMaybe(head)(v.value0.tail)))(transpose(Data_List_Lazy_Types.cons(v1.value0.tail)(mapMaybe(tail)(v.value0.tail))));
+        };
+        throw new Error("Failed pattern match at Data.List.Lazy line 732, column 7 - line 736, column 72: " + [ v1.constructor.name ]);
+    };
+    throw new Error("Failed pattern match at Data.List.Lazy line 728, column 3 - line 736, column 72: " + [ v.constructor.name ]);
+};
+var groupBy = function (eq) {
+    var go = function (v) {
+        if (v instanceof Data_List_Lazy_Types.Nil) {
+            return Data_List_Lazy_Types.Nil.value;
+        };
+        if (v instanceof Data_List_Lazy_Types.Cons) {
+            var v1 = span(eq(v.value0))(v.value1);
+            return new Data_List_Lazy_Types.Cons(Data_Lazy.defer(function (v2) {
+                return new Data_NonEmpty.NonEmpty(v.value0, v1.init);
+            }), groupBy(eq)(v1.rest));
+        };
+        throw new Error("Failed pattern match at Data.List.Lazy line 586, column 3 - line 586, column 15: " + [ v.constructor.name ]);
+    };
+    return function ($250) {
+        return Data_List_Lazy_Types.List(Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)($250)));
+    };
+};
+var group = function (dictEq) {
+    return groupBy(Data_Eq.eq(dictEq));
+};
+var fromStep = function ($251) {
+    return Data_List_Lazy_Types.List(Control_Applicative.pure(Data_Lazy.applicativeLazy)($251));
+};
+var insertBy = function (cmp) {
+    return function (x) {
+        return function (xs) {
+            var go = function (v) {
+                if (v instanceof Data_List_Lazy_Types.Nil) {
+                    return new Data_List_Lazy_Types.Cons(x, Data_List_Lazy_Types.nil);
+                };
+                if (v instanceof Data_List_Lazy_Types.Cons) {
+                    var v1 = cmp(x)(v.value0);
+                    if (v1 instanceof Data_Ordering.GT) {
+                        return new Data_List_Lazy_Types.Cons(v.value0, insertBy(cmp)(x)(v.value1));
+                    };
+                    return new Data_List_Lazy_Types.Cons(x, fromStep(v));
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 234, column 3 - line 234, column 22: " + [ v.constructor.name ]);
+            };
+            return Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(xs));
+        };
+    };
+};
+var insert = function (dictOrd) {
+    return insertBy(Data_Ord.compare(dictOrd));
+};
+var fromFoldable = function (dictFoldable) {
+    return Data_Foldable.foldr(dictFoldable)(Data_List_Lazy_Types.cons)(Data_List_Lazy_Types.nil);
+};
+var foldrLazy = function (dictLazy) {
+    return function (op) {
+        return function (z) {
+            var go = function (xs) {
+                var v = Data_List_Lazy_Types.step(xs);
+                if (v instanceof Data_List_Lazy_Types.Cons) {
+                    return Control_Lazy.defer(dictLazy)(function (v1) {
+                        return op(v.value0)(go(v.value1));
+                    });
+                };
+                if (v instanceof Data_List_Lazy_Types.Nil) {
+                    return z;
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 754, column 13 - line 756, column 14: " + [ v.constructor.name ]);
+            };
+            return go;
+        };
+    };
+};
+var foldM = function (dictMonad) {
+    return function (f) {
+        return function (a) {
+            return function (xs) {
+                var v = uncons(xs);
+                if (v instanceof Data_Maybe.Nothing) {
+                    return Control_Applicative.pure(dictMonad.Applicative0())(a);
+                };
+                if (v instanceof Data_Maybe.Just) {
+                    return Control_Bind.bind(dictMonad.Bind1())(f(a)(v.value0.head))(function (a$prime) {
+                        return foldM(dictMonad)(f)(a$prime)(v.value0.tail);
+                    });
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 745, column 5 - line 748, column 54: " + [ v.constructor.name ]);
+            };
+        };
+    };
+};
+var findIndex = function (fn) {
+    var go = function (n) {
+        return function (list) {
+            return Control_Bind.bind(Data_Maybe.bindMaybe)(uncons(list))(function (v) {
+                var $202 = fn(v.head);
+                if ($202) {
+                    return Control_Applicative.pure(Data_Maybe.applicativeMaybe)(n);
+                };
+                return go(n + 1 | 0)(v.tail);
+            });
+        };
+    };
+    return go(0);
+};
+var findLastIndex = function (fn) {
+    return function (xs) {
+        return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
+            return (length(xs) - 1 | 0) - v | 0;
+        })(findIndex(fn)(reverse(xs)));
+    };
+};
+var filterM = function (dictMonad) {
+    return function (p) {
+        return function (list) {
+            var v = uncons(list);
+            if (v instanceof Data_Maybe.Nothing) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(Data_List_Lazy_Types.nil);
+            };
+            if (v instanceof Data_Maybe.Just) {
+                return Control_Bind.bind(dictMonad.Bind1())(p(v.value0.head))(function (v1) {
+                    return Control_Bind.bind(dictMonad.Bind1())(filterM(dictMonad)(p)(v.value0.tail))(function (v2) {
+                        return Control_Applicative.pure(dictMonad.Applicative0())((function () {
+                            if (v1) {
+                                return Data_List_Lazy_Types.cons(v.value0.head)(v2);
+                            };
+                            return v2;
+                        })());
+                    });
+                });
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy line 442, column 5 - line 447, column 48: " + [ v.constructor.name ]);
+        };
+    };
+};
+var filter = function (p) {
+    var go = function (__copy_v) {
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v) {
+            if (v instanceof Data_List_Lazy_Types.Nil) {
+                __tco_done = true;
+                return Data_List_Lazy_Types.Nil.value;
+            };
+            if (v instanceof Data_List_Lazy_Types.Cons) {
+                if (p(v.value0)) {
+                    __tco_done = true;
+                    return new Data_List_Lazy_Types.Cons(v.value0, filter(p)(v.value1));
+                };
+                if (Data_Boolean.otherwise) {
+                    __copy_v = Data_List_Lazy_Types.step(v.value1);
+                    return;
+                };
+            };
+            throw new Error("Failed pattern match at Data.List.Lazy line 425, column 12 - line 430, column 31: " + [ v.constructor.name ]);
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    return function ($252) {
+        return Data_List_Lazy_Types.List(Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)($252)));
+    };
+};
+var intersectBy = function (eq) {
+    return function (xs) {
+        return function (ys) {
+            return filter(function (x) {
+                return Data_Foldable.any(Data_List_Lazy_Types.foldableList)(Data_HeytingAlgebra.heytingAlgebraBoolean)(eq(x))(ys);
+            })(xs);
+        };
+    };
+};
+var intersect = function (dictEq) {
+    return intersectBy(Data_Eq.eq(dictEq));
+};
+var nubBy = function (eq) {
+    var go = function (v) {
+        if (v instanceof Data_List_Lazy_Types.Nil) {
+            return Data_List_Lazy_Types.Nil.value;
+        };
+        if (v instanceof Data_List_Lazy_Types.Cons) {
+            return new Data_List_Lazy_Types.Cons(v.value0, nubBy(eq)(filter(function (y) {
+                return !eq(v.value0)(y);
+            })(v.value1)));
+        };
+        throw new Error("Failed pattern match at Data.List.Lazy line 619, column 3 - line 619, column 15: " + [ v.constructor.name ]);
+    };
+    return function ($253) {
+        return Data_List_Lazy_Types.List(Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)($253)));
+    };
+};
+var nub = function (dictEq) {
+    return nubBy(Data_Eq.eq(dictEq));
+};
+var eqPattern = function (dictEq) {
+    return new Data_Eq.Eq(function (x) {
+        return function (y) {
+            return Data_Eq.eq(Data_List_Lazy_Types.eqList(dictEq))(x)(y);
+        };
+    });
+};
+var ordPattern = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqPattern(dictOrd.Eq0());
+    }, function (x) {
+        return function (y) {
+            return Data_Ord.compare(Data_List_Lazy_Types.ordList(dictOrd))(x)(y);
+        };
+    });
+};
+var elemLastIndex = function (dictEq) {
+    return function (x) {
+        return findLastIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var elemIndex = function (dictEq) {
+    return function (x) {
+        return findIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var dropWhile = function (p) {
+    var go = function (__copy_v) {
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v) {
+            if (v instanceof Data_List_Lazy_Types.Cons && p(v.value0)) {
+                __copy_v = Data_List_Lazy_Types.step(v.value1);
+                return;
+            };
+            __tco_done = true;
+            return fromStep(v);
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    return function ($254) {
+        return go(Data_List_Lazy_Types.step($254));
+    };
+};
+var drop = function (n) {
+    var go = function (__copy_v) {
+        return function (__copy_v1) {
+            var __tco_v = __copy_v;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(v, v1) {
+                if (v === 0) {
+                    __tco_done = true;
+                    return v1;
+                };
+                if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                    __tco_done = true;
+                    return Data_List_Lazy_Types.Nil.value;
+                };
+                if (v1 instanceof Data_List_Lazy_Types.Cons) {
+                    __tco_v = v - 1 | 0;
+                    __copy_v1 = Data_List_Lazy_Types.step(v1.value1);
+                    return;
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 532, column 10 - line 536, column 44: " + [ v.constructor.name, v1.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_v, __copy_v1);
+            };
+            return __tco_result;
+        };
+    };
+    return function ($255) {
+        return Data_List_Lazy_Types.List(Data_Functor.map(Data_Lazy.functorLazy)(go(n))(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)($255)));
+    };
+};
+var slice = function (start) {
+    return function (end) {
+        return function (xs) {
+            return take(end - start | 0)(drop(start)(xs));
+        };
+    };
+};
+var deleteBy = function (eq) {
+    return function (x) {
+        return function (xs) {
+            var go = function (v) {
+                if (v instanceof Data_List_Lazy_Types.Nil) {
+                    return Data_List_Lazy_Types.Nil.value;
+                };
+                if (v instanceof Data_List_Lazy_Types.Cons) {
+                    if (eq(x)(v.value0)) {
+                        return Data_List_Lazy_Types.step(v.value1);
+                    };
+                    if (Data_Boolean.otherwise) {
+                        return new Data_List_Lazy_Types.Cons(v.value0, deleteBy(eq)(x)(v.value1));
+                    };
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 648, column 3 - line 648, column 15: " + [ v.constructor.name ]);
+            };
+            return Data_Functor.map(Data_Lazy.functorLazy)(go)(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(xs));
+        };
+    };
+};
+var unionBy = function (eq) {
+    return function (xs) {
+        return function (ys) {
+            return Data_Semigroup.append(Data_List_Lazy_Types.semigroupList)(xs)(Data_Foldable.foldl(Data_List_Lazy_Types.foldableList)(Data_Function.flip(deleteBy(eq)))(nubBy(eq)(ys))(xs));
+        };
+    };
+};
+var union = function (dictEq) {
+    return unionBy(Data_Eq.eq(dictEq));
+};
+var deleteAt = function (n) {
+    return function (xs) {
+        var go = function (v) {
+            return function (v1) {
+                if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                    return Data_List_Lazy_Types.Nil.value;
+                };
+                if (v === 0 && v1 instanceof Data_List_Lazy_Types.Cons) {
+                    return Data_List_Lazy_Types.step(v1.value1);
+                };
+                if (v1 instanceof Data_List_Lazy_Types.Cons) {
+                    return new Data_List_Lazy_Types.Cons(v1.value0, deleteAt(v - 1 | 0)(v1.value1));
+                };
+                throw new Error("Failed pattern match at Data.List.Lazy line 352, column 3 - line 352, column 17: " + [ v.constructor.name, v1.constructor.name ]);
+            };
+        };
+        return Data_Functor.map(Data_Lazy.functorLazy)(go(n))(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(xs));
+    };
+};
+var $$delete = function (dictEq) {
+    return deleteBy(Data_Eq.eq(dictEq));
+};
+var difference = function (dictEq) {
+    return Data_Foldable.foldl(Data_List_Lazy_Types.foldableList)(Data_Function.flip($$delete(dictEq)));
+};
+var cycle = function (xs) {
+    return Control_Lazy.fix(Data_List_Lazy_Types.lazyList)(function (ys) {
+        return Data_Semigroup.append(Data_List_Lazy_Types.semigroupList)(xs)(ys);
+    });
+};
+var concatMap = Data_Function.flip(Control_Bind.bind(Data_List_Lazy_Types.bindList));
+var concat = function (v) {
+    return Control_Bind.bind(Data_List_Lazy_Types.bindList)(v)(Control_Category.id(Control_Category.categoryFn));
+};
+var catMaybes = mapMaybe(Control_Category.id(Control_Category.categoryFn));
+var alterAt = function (n) {
+    return function (f) {
+        return function (xs) {
+            var go = function (v) {
+                return function (v1) {
+                    if (v1 instanceof Data_List_Lazy_Types.Nil) {
+                        return Data_List_Lazy_Types.Nil.value;
+                    };
+                    if (v === 0 && v1 instanceof Data_List_Lazy_Types.Cons) {
+                        var v2 = f(v1.value0);
+                        if (v2 instanceof Data_Maybe.Nothing) {
+                            return Data_List_Lazy_Types.step(v1.value1);
+                        };
+                        if (v2 instanceof Data_Maybe.Just) {
+                            return new Data_List_Lazy_Types.Cons(v2.value0, v1.value1);
+                        };
+                        throw new Error("Failed pattern match at Data.List.Lazy line 393, column 22 - line 395, column 26: " + [ v2.constructor.name ]);
+                    };
+                    if (v1 instanceof Data_List_Lazy_Types.Cons) {
+                        return new Data_List_Lazy_Types.Cons(v1.value0, alterAt(v - 1 | 0)(f)(v1.value1));
+                    };
+                    throw new Error("Failed pattern match at Data.List.Lazy line 392, column 3 - line 392, column 17: " + [ v.constructor.name, v1.constructor.name ]);
+                };
+            };
+            return Data_Functor.map(Data_Lazy.functorLazy)(go(n))(Data_Newtype.unwrap(Data_List_Lazy_Types.newtypeList)(xs));
+        };
+    };
+};
+var modifyAt = function (n) {
+    return function (f) {
+        return alterAt(n)(function ($256) {
+            return Data_Maybe.Just.create(f($256));
+        });
+    };
+};
+module.exports = {
+    Pattern: Pattern, 
+    alterAt: alterAt, 
+    catMaybes: catMaybes, 
+    concat: concat, 
+    concatMap: concatMap, 
+    cycle: cycle, 
+    "delete": $$delete, 
+    deleteAt: deleteAt, 
+    deleteBy: deleteBy, 
+    difference: difference, 
+    drop: drop, 
+    dropWhile: dropWhile, 
+    elemIndex: elemIndex, 
+    elemLastIndex: elemLastIndex, 
+    filter: filter, 
+    filterM: filterM, 
+    findIndex: findIndex, 
+    findLastIndex: findLastIndex, 
+    foldM: foldM, 
+    foldrLazy: foldrLazy, 
+    fromFoldable: fromFoldable, 
+    group: group, 
+    groupBy: groupBy, 
+    head: head, 
+    index: index, 
+    init: init, 
+    insert: insert, 
+    insertAt: insertAt, 
+    insertBy: insertBy, 
+    intersect: intersect, 
+    intersectBy: intersectBy, 
+    iterate: iterate, 
+    last: last, 
+    length: length, 
+    many: many, 
+    mapMaybe: mapMaybe, 
+    modifyAt: modifyAt, 
+    nub: nub, 
+    nubBy: nubBy, 
+    "null": $$null, 
+    partition: partition, 
+    range: range, 
+    repeat: repeat, 
+    replicate: replicate, 
+    replicateM: replicateM, 
+    reverse: reverse, 
+    singleton: singleton, 
+    slice: slice, 
+    snoc: snoc, 
+    some: some, 
+    span: span, 
+    stripPrefix: stripPrefix, 
+    tail: tail, 
+    take: take, 
+    takeWhile: takeWhile, 
+    toUnfoldable: toUnfoldable, 
+    transpose: transpose, 
+    uncons: uncons, 
+    union: union, 
+    unionBy: unionBy, 
+    unzip: unzip, 
+    updateAt: updateAt, 
+    zip: zip, 
+    zipWith: zipWith, 
+    zipWithA: zipWithA, 
+    eqPattern: eqPattern, 
+    ordPattern: ordPattern, 
+    newtypePattern: newtypePattern, 
+    showPattern: showPattern
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Lazy":51,"../Control.Monad.Rec.Class":78,"../Control.Semigroupoid":93,"../Data.Boolean":130,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Lazy":169,"../Data.List.Lazy.Types":196,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.NonEmpty":216,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Prelude":278}],198:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_List = require("../Data.List");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_NonEmpty = require("../Data.NonEmpty");
+var Data_Ord = require("../Data.Ord");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semigroup_Foldable = require("../Data.Semigroup.Foldable");
+var Data_Semigroup_Traversable = require("../Data.Semigroup.Traversable");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Partial_Unsafe = require("../Partial.Unsafe");
+var Prelude = require("../Prelude");
+var zipWith = function (f) {
+    return function (v) {
+        return function (v1) {
+            return new Data_NonEmpty.NonEmpty(f(v.value0)(v1.value0), Data_List.zipWith(f)(v.value1)(v1.value1));
+        };
+    };
+};
+var zipWithA = function (dictApplicative) {
+    return function (f) {
+        return function (xs) {
+            return function (ys) {
+                return Data_Semigroup_Traversable.sequence1(Data_List_Types.traversable1NonEmptyList)(dictApplicative.Apply0())(zipWith(f)(xs)(ys));
+            };
+        };
+    };
+};
+var zip = zipWith(Data_Tuple.Tuple.create);
+var wrappedOperation2 = function (name) {
+    return function (f) {
+        return function (v) {
+            return function (v1) {
+                var v2 = f(new Data_List_Types.Cons(v.value0, v.value1))(new Data_List_Types.Cons(v1.value0, v1.value1));
+                if (v2 instanceof Data_List_Types.Cons) {
+                    return new Data_NonEmpty.NonEmpty(v2.value0, v2.value1);
+                };
+                if (v2 instanceof Data_List_Types.Nil) {
+                    return Partial_Unsafe.unsafeCrashWith("Impossible: empty list in NonEmptyList " + name);
+                };
+                throw new Error("Failed pattern match at Data.List.NonEmpty line 101, column 3 - line 103, column 81: " + [ v2.constructor.name ]);
+            };
+        };
+    };
+};
+var wrappedOperation = function (name) {
+    return function (f) {
+        return function (v) {
+            var v1 = f(new Data_List_Types.Cons(v.value0, v.value1));
+            if (v1 instanceof Data_List_Types.Cons) {
+                return new Data_NonEmpty.NonEmpty(v1.value0, v1.value1);
+            };
+            if (v1 instanceof Data_List_Types.Nil) {
+                return Partial_Unsafe.unsafeCrashWith("Impossible: empty list in NonEmptyList " + name);
+            };
+            throw new Error("Failed pattern match at Data.List.NonEmpty line 88, column 3 - line 90, column 81: " + [ v1.constructor.name ]);
+        };
+    };
+};
+var updateAt = function (i) {
+    return function (a) {
+        return function (v) {
+            if (i === 0) {
+                return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(a, v.value1));
+            };
+            if (Data_Boolean.otherwise) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(function ($156) {
+                    return Data_List_Types.NonEmptyList((function (v1) {
+                        return new Data_NonEmpty.NonEmpty(v.value0, v1);
+                    })($156));
+                })(Data_List.updateAt(i - 1 | 0)(a)(v.value1));
+            };
+            throw new Error("Failed pattern match at Data.List.NonEmpty line 188, column 1 - line 190, column 70: " + [ i.constructor.name, a.constructor.name, v.constructor.name ]);
+        };
+    };
+};
+var unzip = function (ts) {
+    return new Data_Tuple.Tuple(Data_Functor.map(Data_List_Types.functorNonEmptyList)(Data_Tuple.fst)(ts), Data_Functor.map(Data_List_Types.functorNonEmptyList)(Data_Tuple.snd)(ts));
+};
+var unsnoc = function (v) {
+    var v1 = Data_List.unsnoc(v.value1);
+    if (v1 instanceof Data_Maybe.Nothing) {
+        return {
+            init: Data_List_Types.Nil.value, 
+            last: v.value0
+        };
+    };
+    if (v1 instanceof Data_Maybe.Just) {
+        return {
+            init: new Data_List_Types.Cons(v.value0, v1.value0.init), 
+            last: v1.value0.last
+        };
+    };
+    throw new Error("Failed pattern match at Data.List.NonEmpty line 149, column 35 - line 151, column 50: " + [ v1.constructor.name ]);
+};
+var unionBy = function ($157) {
+    return wrappedOperation2("unionBy")(Data_List.unionBy($157));
+};
+var union = function (dictEq) {
+    return wrappedOperation2("union")(Data_List.union(dictEq));
+};
+var uncons = function (v) {
+    return {
+        head: v.value0, 
+        tail: v.value1
+    };
+};
+var toList = function (v) {
+    return new Data_List_Types.Cons(v.value0, v.value1);
+};
+var toUnfoldable = function (dictUnfoldable) {
+    return function ($158) {
+        return Data_Unfoldable.unfoldr(dictUnfoldable)(function (xs) {
+            return Data_Functor.map(Data_Maybe.functorMaybe)(function (rec) {
+                return new Data_Tuple.Tuple(rec.head, rec.tail);
+            })(Data_List.uncons(xs));
+        })(toList($158));
+    };
+};
+var tail = function (v) {
+    return v.value1;
+};
+var sortBy = function ($159) {
+    return wrappedOperation("sortBy")(Data_List.sortBy($159));
+};
+var sort = function (dictOrd) {
+    return function (xs) {
+        return sortBy(Data_Ord.compare(dictOrd))(xs);
+    };
+};
+var snoc = function (v) {
+    return function (y) {
+        return new Data_NonEmpty.NonEmpty(v.value0, Data_List.snoc(v.value1)(y));
+    };
+};
+var singleton = function ($160) {
+    return Data_List_Types.NonEmptyList(Data_NonEmpty.singleton(Data_List_Types.plusList)($160));
+};
+var reverse = wrappedOperation("reverse")(Data_List.reverse);
+var nubBy = function ($161) {
+    return wrappedOperation("nubBy")(Data_List.nubBy($161));
+};
+var nub = function (dictEq) {
+    return wrappedOperation("nub")(Data_List.nub(dictEq));
+};
+var modifyAt = function (i) {
+    return function (f) {
+        return function (v) {
+            if (i === 0) {
+                return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(f(v.value0), v.value1));
+            };
+            if (Data_Boolean.otherwise) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(function ($162) {
+                    return Data_List_Types.NonEmptyList((function (v1) {
+                        return new Data_NonEmpty.NonEmpty(v.value0, v1);
+                    })($162));
+                })(Data_List.modifyAt(i - 1 | 0)(f)(v.value1));
+            };
+            throw new Error("Failed pattern match at Data.List.NonEmpty line 193, column 1 - line 195, column 70: " + [ i.constructor.name, f.constructor.name, v.constructor.name ]);
+        };
+    };
+};
+var mapWithIndex = function ($163) {
+    return wrappedOperation("mapWithIndex")(Data_List.mapWithIndex($163));
+};
+var lift = function (f) {
+    return function (v) {
+        return f(new Data_List_Types.Cons(v.value0, v.value1));
+    };
+};
+var mapMaybe = function ($164) {
+    return lift(Data_List.mapMaybe($164));
+};
+var partition = function ($165) {
+    return lift(Data_List.partition($165));
+};
+var span = function ($166) {
+    return lift(Data_List.span($166));
+};
+var take = function ($167) {
+    return lift(Data_List.take($167));
+};
+var takeWhile = function ($168) {
+    return lift(Data_List.takeWhile($168));
+};
+var length = function (v) {
+    return 1 + Data_List.length(v.value1) | 0;
+};
+var last = function (v) {
+    return Data_Maybe.fromMaybe(v.value0)(Data_List.last(v.value1));
+};
+var intersectBy = function ($169) {
+    return wrappedOperation2("intersectBy")(Data_List.intersectBy($169));
+};
+var intersect = function (dictEq) {
+    return wrappedOperation2("intersect")(Data_List.intersect(dictEq));
+};
+var insertAt = function (i) {
+    return function (a) {
+        return function (v) {
+            if (i === 0) {
+                return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(a, new Data_List_Types.Cons(v.value0, v.value1)));
+            };
+            if (Data_Boolean.otherwise) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(function ($170) {
+                    return Data_List_Types.NonEmptyList((function (v1) {
+                        return new Data_NonEmpty.NonEmpty(v.value0, v1);
+                    })($170));
+                })(Data_List.insertAt(i - 1 | 0)(a)(v.value1));
+            };
+            throw new Error("Failed pattern match at Data.List.NonEmpty line 183, column 1 - line 185, column 70: " + [ i.constructor.name, a.constructor.name, v.constructor.name ]);
+        };
+    };
+};
+var init = function (v) {
+    return Data_Maybe.maybe(Data_List_Types.Nil.value)(function (v1) {
+        return new Data_List_Types.Cons(v.value0, v1);
+    })(Data_List.init(v.value1));
+};
+var index = function (v) {
+    return function (i) {
+        if (i === 0) {
+            return new Data_Maybe.Just(v.value0);
+        };
+        if (Data_Boolean.otherwise) {
+            return Data_List.index(v.value1)(i - 1 | 0);
+        };
+        throw new Error("Failed pattern match at Data.List.NonEmpty line 157, column 1 - line 159, column 35: " + [ v.constructor.name, i.constructor.name ]);
+    };
+};
+var head = function (v) {
+    return v.value0;
+};
+var groupBy = function ($171) {
+    return wrappedOperation("groupBy")(Data_List.groupBy($171));
+};
+var group$prime = function (dictOrd) {
+    return wrappedOperation("group'")(Data_List["group'"](dictOrd));
+};
+var group = function (dictEq) {
+    return wrappedOperation("group")(Data_List.group(dictEq));
+};
+var fromList = function (v) {
+    if (v instanceof Data_List_Types.Nil) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Data_List_Types.Cons) {
+        return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(v.value0, v.value1));
+    };
+    throw new Error("Failed pattern match at Data.List.NonEmpty line 118, column 1 - line 118, column 25: " + [ v.constructor.name ]);
+};
+var fromFoldable = function (dictFoldable) {
+    return function ($172) {
+        return fromList(Data_List.fromFoldable(dictFoldable)($172));
+    };
+};
+var foldM = function (dictMonad) {
+    return function (f) {
+        return function (a) {
+            return function (v) {
+                return Control_Bind.bind(dictMonad.Bind1())(f(a)(v.value0))(function (a$prime) {
+                    return Data_List.foldM(dictMonad)(f)(a$prime)(v.value1);
+                });
+            };
+        };
+    };
+};
+var findLastIndex = function (f) {
+    return function (v) {
+        var v1 = Data_List.findLastIndex(f)(v.value1);
+        if (v1 instanceof Data_Maybe.Just) {
+            return new Data_Maybe.Just(v1.value0 + 1 | 0);
+        };
+        if (v1 instanceof Data_Maybe.Nothing) {
+            if (f(v.value0)) {
+                return new Data_Maybe.Just(0);
+            };
+            if (Data_Boolean.otherwise) {
+                return Data_Maybe.Nothing.value;
+            };
+        };
+        throw new Error("Failed pattern match at Data.List.NonEmpty line 176, column 3 - line 180, column 29: " + [ v1.constructor.name ]);
+    };
+};
+var findIndex = function (f) {
+    return function (v) {
+        if (f(v.value0)) {
+            return new Data_Maybe.Just(0);
+        };
+        if (Data_Boolean.otherwise) {
+            return Data_Functor.map(Data_Maybe.functorMaybe)(function (v1) {
+                return v1 + 1 | 0;
+            })(Data_List.findIndex(f)(v.value1));
+        };
+        throw new Error("Failed pattern match at Data.List.NonEmpty line 170, column 1 - line 172, column 45: " + [ f.constructor.name, v.constructor.name ]);
+    };
+};
+var filterM = function (dictMonad) {
+    return function ($173) {
+        return lift(Data_List.filterM(dictMonad)($173));
+    };
+};
+var filter = function ($174) {
+    return lift(Data_List.filter($174));
+};
+var elemLastIndex = function (dictEq) {
+    return function (x) {
+        return findLastIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var elemIndex = function (dictEq) {
+    return function (x) {
+        return findIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var dropWhile = function ($175) {
+    return lift(Data_List.dropWhile($175));
+};
+var drop = function ($176) {
+    return lift(Data_List.drop($176));
+};
+var cons = function (y) {
+    return function (v) {
+        return new Data_NonEmpty.NonEmpty(y, new Data_List_Types.Cons(v.value0, v.value1));
+    };
+};
+var concatMap = Data_Function.flip(Control_Bind.bind(Data_List_Types.bindNonEmptyList));
+var concat = function (v) {
+    return Control_Bind.bind(Data_List_Types.bindNonEmptyList)(v)(Control_Category.id(Control_Category.categoryFn));
+};
+var catMaybes = lift(Data_List.catMaybes);
+var appendFoldable = function (dictFoldable) {
+    return function (v) {
+        return function (ys) {
+            return new Data_NonEmpty.NonEmpty(v.value0, Data_Semigroup.append(Data_List_Types.semigroupList)(v.value1)(Data_List.fromFoldable(dictFoldable)(ys)));
+        };
+    };
+};
+module.exports = {
+    appendFoldable: appendFoldable, 
+    catMaybes: catMaybes, 
+    concat: concat, 
+    concatMap: concatMap, 
+    cons: cons, 
+    drop: drop, 
+    dropWhile: dropWhile, 
+    elemIndex: elemIndex, 
+    elemLastIndex: elemLastIndex, 
+    filter: filter, 
+    filterM: filterM, 
+    findIndex: findIndex, 
+    findLastIndex: findLastIndex, 
+    foldM: foldM, 
+    fromFoldable: fromFoldable, 
+    fromList: fromList, 
+    group: group, 
+    "group'": group$prime, 
+    groupBy: groupBy, 
+    head: head, 
+    index: index, 
+    init: init, 
+    insertAt: insertAt, 
+    intersect: intersect, 
+    intersectBy: intersectBy, 
+    last: last, 
+    length: length, 
+    mapMaybe: mapMaybe, 
+    mapWithIndex: mapWithIndex, 
+    modifyAt: modifyAt, 
+    nub: nub, 
+    nubBy: nubBy, 
+    partition: partition, 
+    reverse: reverse, 
+    singleton: singleton, 
+    snoc: snoc, 
+    sort: sort, 
+    sortBy: sortBy, 
+    span: span, 
+    tail: tail, 
+    take: take, 
+    takeWhile: takeWhile, 
+    toList: toList, 
+    toUnfoldable: toUnfoldable, 
+    uncons: uncons, 
+    union: union, 
+    unionBy: unionBy, 
+    unsnoc: unsnoc, 
+    unzip: unzip, 
+    updateAt: updateAt, 
+    zip: zip, 
+    zipWith: zipWith, 
+    zipWithA: zipWithA
+};
+
+},{"../Control.Bind":46,"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Boolean":130,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.List":200,"../Data.List.Types":199,"../Data.Maybe":204,"../Data.NonEmpty":216,"../Data.Ord":222,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semigroup.Foldable":234,"../Data.Semigroup.Traversable":235,"../Data.Semiring":239,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Partial.Unsafe":275,"../Prelude":278}],199:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_NonEmpty = require("../Data.NonEmpty");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semigroup_Foldable = require("../Data.Semigroup.Foldable");
+var Data_Semigroup_Traversable = require("../Data.Semigroup.Traversable");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Prelude = require("../Prelude");
+var Nil = (function () {
+    function Nil() {
+
+    };
+    Nil.value = new Nil();
+    return Nil;
+})();
+var Cons = (function () {
+    function Cons(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Cons.create = function (value0) {
+        return function (value1) {
+            return new Cons(value0, value1);
+        };
+    };
+    return Cons;
+})();
+var NonEmptyList = function (x) {
+    return x;
+};
+var toList = function (v) {
+    return new Cons(v.value0, v.value1);
+};
+var newtypeNonEmptyList = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, NonEmptyList);
+var nelCons = function (a) {
+    return function (v) {
+        return new Data_NonEmpty.NonEmpty(a, new Cons(v.value0, v.value1));
+    };
+};
+var foldableList = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return Data_Foldable.foldl(foldableList)(function (acc) {
+            return function ($143) {
+                return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f($143));
+            };
+        })(Data_Monoid.mempty(dictMonoid));
+    };
+}, function (f) {
+    var go = function (__copy_b) {
+        return function (__copy_v) {
+            var __tco_b = __copy_b;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(b, v) {
+                if (v instanceof Nil) {
+                    __tco_done = true;
+                    return b;
+                };
+                if (v instanceof Cons) {
+                    __tco_b = f(b)(v.value0);
+                    __copy_v = v.value1;
+                    return;
+                };
+                throw new Error("Failed pattern match at Data.List.Types line 78, column 12 - line 80, column 30: " + [ v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_b, __copy_v);
+            };
+            return __tco_result;
+        };
+    };
+    return go;
+}, function (f) {
+    return function (b) {
+        var rev = function (__copy_acc) {
+            return function (__copy_v) {
+                var __tco_acc = __copy_acc;
+                var __tco_done = false;
+                var __tco_result;
+                function __tco_loop(acc, v) {
+                    if (v instanceof Nil) {
+                        __tco_done = true;
+                        return acc;
+                    };
+                    if (v instanceof Cons) {
+                        __tco_acc = new Cons(v.value0, acc);
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    throw new Error("Failed pattern match at Data.List.Types line 73, column 15 - line 75, column 33: " + [ v.constructor.name ]);
+                };
+                while (!__tco_done) {
+                    __tco_result = __tco_loop(__tco_acc, __copy_v);
+                };
+                return __tco_result;
+            };
+        };
+        return function ($144) {
+            return Data_Foldable.foldl(foldableList)(Data_Function.flip(f))(b)(rev(Nil.value)($144));
+        };
+    };
+});
+var foldableNonEmptyList = Data_NonEmpty.foldableNonEmpty(foldableList);
+var functorList = new Data_Functor.Functor(function (f) {
+    return Data_Foldable.foldr(foldableList)(function (x) {
+        return function (acc) {
+            return new Cons(f(x), acc);
+        };
+    })(Nil.value);
+});
+var functorNonEmptyList = Data_NonEmpty.functorNonEmpty(functorList);
+var semigroupList = new Data_Semigroup.Semigroup(function (xs) {
+    return function (ys) {
+        return Data_Foldable.foldr(foldableList)(Cons.create)(ys)(xs);
+    };
+});
+var monoidList = new Data_Monoid.Monoid(function () {
+    return semigroupList;
+}, Nil.value);
+var semigroupNonEmptyList = new Data_Semigroup.Semigroup(function (v) {
+    return function (as$prime) {
+        return new Data_NonEmpty.NonEmpty(v.value0, Data_Semigroup.append(semigroupList)(v.value1)(toList(as$prime)));
+    };
+});
+var showList = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        if (v instanceof Nil) {
+            return "Nil";
+        };
+        return "(" + (Data_Foldable.intercalate(foldableList)(Data_Monoid.monoidString)(" : ")(Data_Functor.map(functorList)(Data_Show.show(dictShow))(v)) + " : Nil)");
+    });
+};
+var showNonEmptyList = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(NonEmptyList " + (Data_Show.show(Data_NonEmpty.showNonEmpty(dictShow)(showList(dictShow)))(v) + ")");
+    });
+};
+var traversableList = new Data_Traversable.Traversable(function () {
+    return foldableList;
+}, function () {
+    return functorList;
+}, function (dictApplicative) {
+    return Data_Traversable.traverse(traversableList)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
+}, function (dictApplicative) {
+    return function (f) {
+        return function ($145) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Foldable.foldl(foldableList)(Data_Function.flip(Cons.create))(Nil.value))(Data_Foldable.foldl(foldableList)(function (acc) {
+                return function ($146) {
+                    return Control_Apply.lift2(dictApplicative.Apply0())(Data_Function.flip(Cons.create))(acc)(f($146));
+                };
+            })(Control_Applicative.pure(dictApplicative)(Nil.value))($145));
+        };
+    };
+});
+var traversableNonEmptyList = Data_NonEmpty.traversableNonEmpty(traversableList);
+var unfoldableList = new Data_Unfoldable.Unfoldable(function (f) {
+    return function (b) {
+        var go = function (__copy_source) {
+            return function (__copy_memo) {
+                var __tco_source = __copy_source;
+                var __tco_done = false;
+                var __tco_result;
+                function __tco_loop(source, memo) {
+                    var v = f(source);
+                    if (v instanceof Data_Maybe.Nothing) {
+                        __tco_done = true;
+                        return Data_Foldable.foldl(foldableList)(Data_Function.flip(Cons.create))(Nil.value)(memo);
+                    };
+                    if (v instanceof Data_Maybe.Just) {
+                        __tco_source = v.value0.value1;
+                        __copy_memo = new Cons(v.value0.value0, memo);
+                        return;
+                    };
+                    throw new Error("Failed pattern match at Data.List.Types line 86, column 22 - line 88, column 52: " + [ v.constructor.name ]);
+                };
+                while (!__tco_done) {
+                    __tco_result = __tco_loop(__tco_source, __copy_memo);
+                };
+                return __tco_result;
+            };
+        };
+        return go(b)(Nil.value);
+    };
+});
+var foldable1NonEmptyList = new Data_Semigroup_Foldable.Foldable1(function () {
+    return foldableNonEmptyList;
+}, function (dictSemigroup) {
+    return function (v) {
+        return Data_Foldable.foldl(foldableList)(Data_Semigroup.append(dictSemigroup))(v.value0)(v.value1);
+    };
+}, function (dictSemigroup) {
+    return function (f) {
+        return function (v) {
+            return Data_Foldable.foldl(foldableList)(function (acc) {
+                return function ($147) {
+                    return Data_Semigroup.append(dictSemigroup)(acc)(f($147));
+                };
+            })(f(v.value0))(v.value1);
+        };
+    };
+});
+var extendNonEmptyList = new Control_Extend.Extend(function () {
+    return functorNonEmptyList;
+}, function (f) {
+    return function (v) {
+        var go = function (a) {
+            return function (v1) {
+                return {
+                    val: new Cons(f(new Data_NonEmpty.NonEmpty(a, v1.acc)), v1.val), 
+                    acc: new Cons(a, v1.acc)
+                };
+            };
+        };
+        return new Data_NonEmpty.NonEmpty(f(v), (Data_Foldable.foldr(foldableList)(go)({
+            val: Nil.value, 
+            acc: Nil.value
+        })(v.value1)).val);
+    };
+});
+var extendList = new Control_Extend.Extend(function () {
+    return functorList;
+}, function (f) {
+    return function (v) {
+        if (v instanceof Nil) {
+            return Nil.value;
+        };
+        if (v instanceof Cons) {
+            var go = function (a$prime) {
+                return function (v1) {
+                    var acc$prime = new Cons(a$prime, v1.acc);
+                    return {
+                        val: new Cons(f(acc$prime), v1.val), 
+                        acc: acc$prime
+                    };
+                };
+            };
+            return new Cons(f(v), (Data_Foldable.foldr(foldableList)(go)({
+                val: Nil.value, 
+                acc: Nil.value
+            })(v.value1)).val);
+        };
+        throw new Error("Failed pattern match at Data.List.Types line 120, column 3 - line 120, column 21: " + [ f.constructor.name, v.constructor.name ]);
+    };
+});
+var eq1List = new Data_Eq.Eq1(function (dictEq) {
+    return function (xs) {
+        return function (ys) {
+            var go = function (__copy_v) {
+                return function (__copy_v1) {
+                    return function (__copy_v2) {
+                        var __tco_v = __copy_v;
+                        var __tco_v1 = __copy_v1;
+                        var __tco_done = false;
+                        var __tco_result;
+                        function __tco_loop(v, v1, v2) {
+                            if (!v2) {
+                                __tco_done = true;
+                                return false;
+                            };
+                            if (v instanceof Nil && v1 instanceof Nil) {
+                                __tco_done = true;
+                                return v2;
+                            };
+                            if (v instanceof Cons && v1 instanceof Cons) {
+                                __tco_v = v.value1;
+                                __tco_v1 = v1.value1;
+                                __copy_v2 = v2 && Data_Eq.eq(dictEq)(v1.value0)(v.value0);
+                                return;
+                            };
+                            __tco_done = true;
+                            return false;
+                        };
+                        while (!__tco_done) {
+                            __tco_result = __tco_loop(__tco_v, __tco_v1, __copy_v2);
+                        };
+                        return __tco_result;
+                    };
+                };
+            };
+            return go(xs)(ys)(true);
+        };
+    };
+});
+var eqList = function (dictEq) {
+    return new Data_Eq.Eq(Data_Eq.eq1(eq1List)(dictEq));
+};
+var eqNonEmptyList = function (dictEq) {
+    return Data_NonEmpty.eqNonEmpty(eq1List)(dictEq);
+};
+var ord1List = new Data_Ord.Ord1(function () {
+    return eq1List;
+}, function (dictOrd) {
+    return function (xs) {
+        return function (ys) {
+            var go = function (__copy_v) {
+                return function (__copy_v1) {
+                    var __tco_v = __copy_v;
+                    var __tco_done = false;
+                    var __tco_result;
+                    function __tco_loop(v, v1) {
+                        if (v instanceof Nil && v1 instanceof Nil) {
+                            __tco_done = true;
+                            return Data_Ordering.EQ.value;
+                        };
+                        if (v instanceof Nil) {
+                            __tco_done = true;
+                            return Data_Ordering.LT.value;
+                        };
+                        if (v1 instanceof Nil) {
+                            __tco_done = true;
+                            return Data_Ordering.GT.value;
+                        };
+                        if (v instanceof Cons && v1 instanceof Cons) {
+                            var v2 = Data_Ord.compare(dictOrd)(v.value0)(v1.value0);
+                            if (v2 instanceof Data_Ordering.EQ) {
+                                __tco_v = v.value1;
+                                __copy_v1 = v1.value1;
+                                return;
+                            };
+                            __tco_done = true;
+                            return v2;
+                        };
+                        throw new Error("Failed pattern match at Data.List.Types line 51, column 20 - line 59, column 23: " + [ v.constructor.name, v1.constructor.name ]);
+                    };
+                    while (!__tco_done) {
+                        __tco_result = __tco_loop(__tco_v, __copy_v1);
+                    };
+                    return __tco_result;
+                };
+            };
+            return go(xs)(ys);
+        };
+    };
+});
+var ordList = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqList(dictOrd.Eq0());
+    }, Data_Ord.compare1(ord1List)(dictOrd));
+};
+var ordNonEmptyList = function (dictOrd) {
+    return Data_NonEmpty.ordNonEmpty(ord1List)(dictOrd);
+};
+var comonadNonEmptyList = new Control_Comonad.Comonad(function () {
+    return extendNonEmptyList;
+}, function (v) {
+    return v.value0;
+});
+var applyList = new Control_Apply.Apply(function () {
+    return functorList;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Nil) {
+            return Nil.value;
+        };
+        if (v instanceof Cons) {
+            return Data_Semigroup.append(semigroupList)(Data_Functor.map(functorList)(v.value0)(v1))(Control_Apply.apply(applyList)(v.value1)(v1));
+        };
+        throw new Error("Failed pattern match at Data.List.Types line 95, column 3 - line 95, column 20: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var applyNonEmptyList = new Control_Apply.Apply(function () {
+    return functorNonEmptyList;
+}, function (v) {
+    return function (v1) {
+        return new Data_NonEmpty.NonEmpty(v.value0(v1.value0), Data_Semigroup.append(semigroupList)(Control_Apply.apply(applyList)(v.value1)(new Cons(v1.value0, Nil.value)))(Control_Apply.apply(applyList)(new Cons(v.value0, v.value1))(v1.value1)));
+    };
+});
+var bindList = new Control_Bind.Bind(function () {
+    return applyList;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Nil) {
+            return Nil.value;
+        };
+        if (v instanceof Cons) {
+            return Data_Semigroup.append(semigroupList)(v1(v.value0))(Control_Bind.bind(bindList)(v.value1)(v1));
+        };
+        throw new Error("Failed pattern match at Data.List.Types line 102, column 3 - line 102, column 19: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var bindNonEmptyList = new Control_Bind.Bind(function () {
+    return applyNonEmptyList;
+}, function (v) {
+    return function (f) {
+        var v1 = f(v.value0);
+        return new Data_NonEmpty.NonEmpty(v1.value0, Data_Semigroup.append(semigroupList)(v1.value1)(Control_Bind.bind(bindList)(v.value1)(function ($148) {
+            return toList(f($148));
+        })));
+    };
+});
+var applicativeList = new Control_Applicative.Applicative(function () {
+    return applyList;
+}, function (a) {
+    return new Cons(a, Nil.value);
+});
+var monadList = new Control_Monad.Monad(function () {
+    return applicativeList;
+}, function () {
+    return bindList;
+});
+var altNonEmptyList = new Control_Alt.Alt(function () {
+    return functorNonEmptyList;
+}, Data_Semigroup.append(semigroupNonEmptyList));
+var altList = new Control_Alt.Alt(function () {
+    return functorList;
+}, Data_Semigroup.append(semigroupList));
+var plusList = new Control_Plus.Plus(function () {
+    return altList;
+}, Nil.value);
+var alternativeList = new Control_Alternative.Alternative(function () {
+    return applicativeList;
+}, function () {
+    return plusList;
+});
+var monadZeroList = new Control_MonadZero.MonadZero(function () {
+    return alternativeList;
+}, function () {
+    return monadList;
+});
+var monadPlusList = new Control_MonadPlus.MonadPlus(function () {
+    return monadZeroList;
+});
+var applicativeNonEmptyList = new Control_Applicative.Applicative(function () {
+    return applyNonEmptyList;
+}, function ($149) {
+    return NonEmptyList(Data_NonEmpty.singleton(plusList)($149));
+});
+var monadNonEmptyList = new Control_Monad.Monad(function () {
+    return applicativeNonEmptyList;
+}, function () {
+    return bindNonEmptyList;
+});
+var traversable1NonEmptyList = new Data_Semigroup_Traversable.Traversable1(function () {
+    return foldable1NonEmptyList;
+}, function () {
+    return traversableNonEmptyList;
+}, function (dictApply) {
+    return Data_Semigroup_Traversable.traverse1(traversable1NonEmptyList)(dictApply)(Control_Category.id(Control_Category.categoryFn));
+}, function (dictApply) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.mapFlipped(dictApply.Functor0())(Data_Foldable.foldl(foldableList)(function (acc) {
+                return function ($150) {
+                    return Control_Apply.lift2(dictApply)(Data_Function.flip(nelCons))(acc)(f($150));
+                };
+            })(Data_Functor.map(dictApply.Functor0())(Control_Applicative.pure(applicativeNonEmptyList))(f(v.value0)))(v.value1))(function (v1) {
+                return Data_Foldable.foldl(foldableList)(Data_Function.flip(nelCons))(Control_Applicative.pure(applicativeNonEmptyList)(v1.value0))(v1.value1);
+            });
+        };
+    };
+});
+module.exports = {
+    Nil: Nil, 
+    Cons: Cons, 
+    NonEmptyList: NonEmptyList, 
+    nelCons: nelCons, 
+    toList: toList, 
+    showList: showList, 
+    eqList: eqList, 
+    eq1List: eq1List, 
+    ordList: ordList, 
+    ord1List: ord1List, 
+    semigroupList: semigroupList, 
+    monoidList: monoidList, 
+    functorList: functorList, 
+    foldableList: foldableList, 
+    unfoldableList: unfoldableList, 
+    traversableList: traversableList, 
+    applyList: applyList, 
+    applicativeList: applicativeList, 
+    bindList: bindList, 
+    monadList: monadList, 
+    altList: altList, 
+    plusList: plusList, 
+    alternativeList: alternativeList, 
+    monadZeroList: monadZeroList, 
+    monadPlusList: monadPlusList, 
+    extendList: extendList, 
+    newtypeNonEmptyList: newtypeNonEmptyList, 
+    eqNonEmptyList: eqNonEmptyList, 
+    ordNonEmptyList: ordNonEmptyList, 
+    showNonEmptyList: showNonEmptyList, 
+    functorNonEmptyList: functorNonEmptyList, 
+    applyNonEmptyList: applyNonEmptyList, 
+    applicativeNonEmptyList: applicativeNonEmptyList, 
+    bindNonEmptyList: bindNonEmptyList, 
+    monadNonEmptyList: monadNonEmptyList, 
+    altNonEmptyList: altNonEmptyList, 
+    extendNonEmptyList: extendNonEmptyList, 
+    comonadNonEmptyList: comonadNonEmptyList, 
+    semigroupNonEmptyList: semigroupNonEmptyList, 
+    foldableNonEmptyList: foldableNonEmptyList, 
+    traversableNonEmptyList: traversableNonEmptyList, 
+    foldable1NonEmptyList: foldable1NonEmptyList, 
+    traversable1NonEmptyList: traversable1NonEmptyList
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Monad":87,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.NonEmpty":216,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Semigroup.Foldable":234,"../Data.Semigroup.Traversable":235,"../Data.Show":241,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Prelude":278}],200:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad_Rec_Class = require("../Control.Monad.Rec.Class");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Boolean = require("../Data.Boolean");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_NonEmpty = require("../Data.NonEmpty");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Pattern = function (x) {
+    return x;
+};
+var updateAt = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v === 0 && v2 instanceof Data_List_Types.Cons) {
+                return new Data_Maybe.Just(new Data_List_Types.Cons(v1, v2.value1));
+            };
+            if (v2 instanceof Data_List_Types.Cons) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(function (v3) {
+                    return new Data_List_Types.Cons(v2.value0, v3);
+                })(updateAt(v - 1 | 0)(v1)(v2.value1));
+            };
+            return Data_Maybe.Nothing.value;
+        };
+    };
+};
+var unzip = Data_Foldable.foldr(Data_List_Types.foldableList)(function (v) {
+    return function (v1) {
+        return new Data_Tuple.Tuple(new Data_List_Types.Cons(v.value0, v1.value0), new Data_List_Types.Cons(v.value1, v1.value1));
+    };
+})(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_Types.Nil.value));
+var uncons = function (v) {
+    if (v instanceof Data_List_Types.Nil) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Data_List_Types.Cons) {
+        return new Data_Maybe.Just({
+            head: v.value0, 
+            tail: v.value1
+        });
+    };
+    throw new Error("Failed pattern match at Data.List line 257, column 1 - line 257, column 21: " + [ v.constructor.name ]);
+};
+var toUnfoldable = function (dictUnfoldable) {
+    return Data_Unfoldable.unfoldr(dictUnfoldable)(function (xs) {
+        return Data_Functor.map(Data_Maybe.functorMaybe)(function (rec) {
+            return new Data_Tuple.Tuple(rec.head, rec.tail);
+        })(uncons(xs));
+    });
+};
+var tail = function (v) {
+    if (v instanceof Data_List_Types.Nil) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Data_List_Types.Cons) {
+        return new Data_Maybe.Just(v.value1);
+    };
+    throw new Error("Failed pattern match at Data.List line 243, column 1 - line 243, column 19: " + [ v.constructor.name ]);
+};
+var stripPrefix = function (dictEq) {
+    return function (v) {
+        return function (s) {
+            var go = function (prefix) {
+                return function (input) {
+                    if (prefix instanceof Data_List_Types.Cons && (input instanceof Data_List_Types.Cons && Data_Eq.eq(dictEq)(prefix.value0)(input.value0))) {
+                        return Data_Maybe.Just.create(new Control_Monad_Rec_Class.Loop({
+                            a: prefix.value1, 
+                            b: input.value1
+                        }));
+                    };
+                    if (prefix instanceof Data_List_Types.Nil) {
+                        return Data_Maybe.Just.create(new Control_Monad_Rec_Class.Done(input));
+                    };
+                    return Data_Maybe.Nothing.value;
+                };
+            };
+            return Control_Monad_Rec_Class.tailRecM2(Control_Monad_Rec_Class.monadRecMaybe)(go)(v)(s);
+        };
+    };
+};
+var span = function (v) {
+    return function (v1) {
+        if (v1 instanceof Data_List_Types.Cons && v(v1.value0)) {
+            var v2 = span(v)(v1.value1);
+            return {
+                init: new Data_List_Types.Cons(v1.value0, v2.init), 
+                rest: v2.rest
+            };
+        };
+        return {
+            init: Data_List_Types.Nil.value, 
+            rest: v1
+        };
+    };
+};
+var snoc = function (xs) {
+    return function (x) {
+        return Data_Foldable.foldr(Data_List_Types.foldableList)(Data_List_Types.Cons.create)(new Data_List_Types.Cons(x, Data_List_Types.Nil.value))(xs);
+    };
+};
+var singleton = function (a) {
+    return new Data_List_Types.Cons(a, Data_List_Types.Nil.value);
+};
+var sortBy = function (cmp) {
+    var merge = function (v) {
+        return function (v1) {
+            if (v instanceof Data_List_Types.Cons && v1 instanceof Data_List_Types.Cons) {
+                if (Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1.value0))(Data_Ordering.GT.value)) {
+                    return new Data_List_Types.Cons(v1.value0, merge(v)(v1.value1));
+                };
+                if (Data_Boolean.otherwise) {
+                    return new Data_List_Types.Cons(v.value0, merge(v.value1)(v1));
+                };
+            };
+            if (v instanceof Data_List_Types.Nil) {
+                return v1;
+            };
+            if (v1 instanceof Data_List_Types.Nil) {
+                return v;
+            };
+            throw new Error("Failed pattern match at Data.List line 472, column 3 - line 474, column 41: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    };
+    var mergePairs = function (v) {
+        if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Cons) {
+            return new Data_List_Types.Cons(merge(v.value0)(v.value1.value0), mergePairs(v.value1.value1));
+        };
+        return v;
+    };
+    var mergeAll = function (__copy_v) {
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v) {
+            if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {
+                __tco_done = true;
+                return v.value0;
+            };
+            __copy_v = mergePairs(v);
+            return;
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    var sequences = function (v) {
+        if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Cons) {
+            if (Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v.value1.value0))(Data_Ordering.GT.value)) {
+                return descending(v.value1.value0)(singleton(v.value0))(v.value1.value1);
+            };
+            if (Data_Boolean.otherwise) {
+                return ascending(v.value1.value0)(function (v1) {
+                    return new Data_List_Types.Cons(v.value0, v1);
+                })(v.value1.value1);
+            };
+        };
+        return singleton(v);
+    };
+    var descending = function (__copy_a) {
+        return function (__copy_as) {
+            return function (__copy_v) {
+                var __tco_a = __copy_a;
+                var __tco_as = __copy_as;
+                var __tco_done = false;
+                var __tco_result;
+                function __tco_loop(a, as, v) {
+                    if (v instanceof Data_List_Types.Cons && Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(a)(v.value0))(Data_Ordering.GT.value)) {
+                        __tco_a = v.value0;
+                        __tco_as = new Data_List_Types.Cons(a, as);
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    __tco_done = true;
+                    return new Data_List_Types.Cons(new Data_List_Types.Cons(a, as), sequences(v));
+                };
+                while (!__tco_done) {
+                    __tco_result = __tco_loop(__tco_a, __tco_as, __copy_v);
+                };
+                return __tco_result;
+            };
+        };
+    };
+    var ascending = function (__copy_a) {
+        return function (__copy_as) {
+            return function (__copy_v) {
+                var __tco_a = __copy_a;
+                var __tco_as = __copy_as;
+                var __tco_done = false;
+                var __tco_result;
+                function __tco_loop(a, as, v) {
+                    if (v instanceof Data_List_Types.Cons && Data_Eq.notEq(Data_Ordering.eqOrdering)(cmp(a)(v.value0))(Data_Ordering.GT.value)) {
+                        __tco_a = v.value0;
+                        __tco_as = function (ys) {
+                            return as(new Data_List_Types.Cons(a, ys));
+                        };
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    __tco_done = true;
+                    return new Data_List_Types.Cons(as(singleton(a)), sequences(v));
+                };
+                while (!__tco_done) {
+                    __tco_result = __tco_loop(__tco_a, __tco_as, __copy_v);
+                };
+                return __tco_result;
+            };
+        };
+    };
+    return function ($340) {
+        return mergeAll(sequences($340));
+    };
+};
+var sort = function (dictOrd) {
+    return function (xs) {
+        return sortBy(Data_Ord.compare(dictOrd))(xs);
+    };
+};
+var showPattern = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Pattern " + (Data_Show.show(Data_List_Types.showList(dictShow))(v) + ")");
+    });
+};
+var reverse = (function () {
+    var go = function (__copy_acc) {
+        return function (__copy_v) {
+            var __tco_acc = __copy_acc;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(acc, v) {
+                if (v instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return acc;
+                };
+                if (v instanceof Data_List_Types.Cons) {
+                    __tco_acc = new Data_List_Types.Cons(v.value0, acc);
+                    __copy_v = v.value1;
+                    return;
+                };
+                throw new Error("Failed pattern match at Data.List line 363, column 11 - line 366, column 36: " + [ acc.constructor.name, v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_acc, __copy_v);
+            };
+            return __tco_result;
+        };
+    };
+    return go(Data_List_Types.Nil.value);
+})();
+var take = (function () {
+    var go = function (__copy_acc) {
+        return function (__copy_v) {
+            return function (__copy_v1) {
+                var __tco_acc = __copy_acc;
+                var __tco_v = __copy_v;
+                var __tco_done = false;
+                var __tco_result;
+                function __tco_loop(acc, v, v1) {
+                    if (v === 0) {
+                        __tco_done = true;
+                        return reverse(acc);
+                    };
+                    if (v1 instanceof Data_List_Types.Nil) {
+                        __tco_done = true;
+                        return reverse(acc);
+                    };
+                    if (v1 instanceof Data_List_Types.Cons) {
+                        __tco_acc = new Data_List_Types.Cons(v1.value0, acc);
+                        __tco_v = v - 1 | 0;
+                        __copy_v1 = v1.value1;
+                        return;
+                    };
+                    throw new Error("Failed pattern match at Data.List line 516, column 8 - line 520, column 46: " + [ acc.constructor.name, v.constructor.name, v1.constructor.name ]);
+                };
+                while (!__tco_done) {
+                    __tco_result = __tco_loop(__tco_acc, __tco_v, __copy_v1);
+                };
+                return __tco_result;
+            };
+        };
+    };
+    return go(Data_List_Types.Nil.value);
+})();
+var takeWhile = function (p) {
+    var go = function (__copy_acc) {
+        return function (__copy_v) {
+            var __tco_acc = __copy_acc;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(acc, v) {
+                if (v instanceof Data_List_Types.Cons && p(v.value0)) {
+                    __tco_acc = new Data_List_Types.Cons(v.value0, acc);
+                    __copy_v = v.value1;
+                    return;
+                };
+                __tco_done = true;
+                return reverse(acc);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_acc, __copy_v);
+            };
+            return __tco_result;
+        };
+    };
+    return go(Data_List_Types.Nil.value);
+};
+var unsnoc = function (lst) {
+    var go = function (__copy_v) {
+        return function (__copy_acc) {
+            var __tco_v = __copy_v;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(v, acc) {
+                if (v instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return Data_Maybe.Nothing.value;
+                };
+                if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return new Data_Maybe.Just({
+                        revInit: acc, 
+                        last: v.value0
+                    });
+                };
+                if (v instanceof Data_List_Types.Cons) {
+                    __tco_v = v.value1;
+                    __copy_acc = new Data_List_Types.Cons(v.value0, acc);
+                    return;
+                };
+                throw new Error("Failed pattern match at Data.List line 265, column 14 - line 269, column 36: " + [ v.constructor.name, acc.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_v, __copy_acc);
+            };
+            return __tco_result;
+        };
+    };
+    return Data_Functor.map(Data_Maybe.functorMaybe)(function (h) {
+        return {
+            init: reverse(h.revInit), 
+            last: h.last
+        };
+    })(go(lst)(Data_List_Types.Nil.value));
+};
+var zipWith = function (f) {
+    return function (xs) {
+        return function (ys) {
+            var go = function (__copy_v) {
+                return function (__copy_v1) {
+                    return function (__copy_acc) {
+                        var __tco_v = __copy_v;
+                        var __tco_v1 = __copy_v1;
+                        var __tco_done = false;
+                        var __tco_result;
+                        function __tco_loop(v, v1, acc) {
+                            if (v instanceof Data_List_Types.Nil) {
+                                __tco_done = true;
+                                return acc;
+                            };
+                            if (v1 instanceof Data_List_Types.Nil) {
+                                __tco_done = true;
+                                return acc;
+                            };
+                            if (v instanceof Data_List_Types.Cons && v1 instanceof Data_List_Types.Cons) {
+                                __tco_v = v.value1;
+                                __tco_v1 = v1.value1;
+                                __copy_acc = new Data_List_Types.Cons(f(v.value0)(v1.value0), acc);
+                                return;
+                            };
+                            throw new Error("Failed pattern match at Data.List line 690, column 19 - line 694, column 52: " + [ v.constructor.name, v1.constructor.name, acc.constructor.name ]);
+                        };
+                        while (!__tco_done) {
+                            __tco_result = __tco_loop(__tco_v, __tco_v1, __copy_acc);
+                        };
+                        return __tco_result;
+                    };
+                };
+            };
+            return reverse(go(xs)(ys)(Data_List_Types.Nil.value));
+        };
+    };
+};
+var zip = zipWith(Data_Tuple.Tuple.create);
+var zipWithA = function (dictApplicative) {
+    return function (f) {
+        return function (xs) {
+            return function (ys) {
+                return Data_Traversable.sequence(Data_List_Types.traversableList)(dictApplicative)(zipWith(f)(xs)(ys));
+            };
+        };
+    };
+};
+var range = function (start) {
+    return function (end) {
+        if (start === end) {
+            return singleton(start);
+        };
+        if (Data_Boolean.otherwise) {
+            var go = function (__copy_s) {
+                return function (__copy_e) {
+                    return function (__copy_step) {
+                        return function (__copy_rest) {
+                            var __tco_s = __copy_s;
+                            var __tco_e = __copy_e;
+                            var __tco_step = __copy_step;
+                            var __tco_done = false;
+                            var __tco_result;
+                            function __tco_loop(s, e, step, rest) {
+                                if (s === e) {
+                                    __tco_done = true;
+                                    return new Data_List_Types.Cons(s, rest);
+                                };
+                                if (Data_Boolean.otherwise) {
+                                    __tco_s = s + step | 0;
+                                    __tco_e = e;
+                                    __tco_step = step;
+                                    __copy_rest = new Data_List_Types.Cons(s, rest);
+                                    return;
+                                };
+                                throw new Error("Failed pattern match at Data.List line 143, column 31 - line 146, column 65: " + [ s.constructor.name, e.constructor.name, step.constructor.name, rest.constructor.name ]);
+                            };
+                            while (!__tco_done) {
+                                __tco_result = __tco_loop(__tco_s, __tco_e, __tco_step, __copy_rest);
+                            };
+                            return __tco_result;
+                        };
+                    };
+                };
+            };
+            return go(end)(start)((function () {
+                var $221 = start > end;
+                if ($221) {
+                    return 1;
+                };
+                return -1 | 0;
+            })())(Data_List_Types.Nil.value);
+        };
+        throw new Error("Failed pattern match at Data.List line 142, column 1 - line 146, column 65: " + [ start.constructor.name, end.constructor.name ]);
+    };
+};
+var partition = function (p) {
+    return function (xs) {
+        var select = function (x) {
+            return function (v) {
+                var $224 = p(x);
+                if ($224) {
+                    return {
+                        no: v.no, 
+                        yes: new Data_List_Types.Cons(x, v.yes)
+                    };
+                };
+                return {
+                    no: new Data_List_Types.Cons(x, v.no), 
+                    yes: v.yes
+                };
+            };
+        };
+        return Data_Foldable.foldr(Data_List_Types.foldableList)(select)({
+            no: Data_List_Types.Nil.value, 
+            yes: Data_List_Types.Nil.value
+        })(xs);
+    };
+};
+var $$null = function (v) {
+    if (v instanceof Data_List_Types.Nil) {
+        return true;
+    };
+    return false;
+};
+var newtypePattern = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Pattern);
+var mapWithIndex = function (f) {
+    return function (lst) {
+        var go = function (__copy_v) {
+            return function (__copy_v1) {
+                return function (__copy_acc) {
+                    var __tco_v = __copy_v;
+                    var __tco_v1 = __copy_v1;
+                    var __tco_done = false;
+                    var __tco_result;
+                    function __tco_loop(v, v1, acc) {
+                        if (v1 instanceof Data_List_Types.Nil) {
+                            __tco_done = true;
+                            return acc;
+                        };
+                        if (v1 instanceof Data_List_Types.Cons) {
+                            __tco_v = v + 1 | 0;
+                            __tco_v1 = v1.value1;
+                            __copy_acc = new Data_List_Types.Cons(f(v)(v1.value0), acc);
+                            return;
+                        };
+                        throw new Error("Failed pattern match at Data.List line 428, column 22 - line 431, column 48: " + [ v.constructor.name, v1.constructor.name, acc.constructor.name ]);
+                    };
+                    while (!__tco_done) {
+                        __tco_result = __tco_loop(__tco_v, __tco_v1, __copy_acc);
+                    };
+                    return __tco_result;
+                };
+            };
+        };
+        return reverse(go(0)(lst)(Data_List_Types.Nil.value));
+    };
+};
+var mapMaybe = function (f) {
+    var go = function (__copy_acc) {
+        return function (__copy_v) {
+            var __tco_acc = __copy_acc;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(acc, v) {
+                if (v instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return reverse(acc);
+                };
+                if (v instanceof Data_List_Types.Cons) {
+                    var v1 = f(v.value0);
+                    if (v1 instanceof Data_Maybe.Nothing) {
+                        __tco_acc = acc;
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    if (v1 instanceof Data_Maybe.Just) {
+                        __tco_acc = new Data_List_Types.Cons(v1.value0, acc);
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    throw new Error("Failed pattern match at Data.List line 416, column 5 - line 418, column 32: " + [ v1.constructor.name ]);
+                };
+                throw new Error("Failed pattern match at Data.List line 412, column 14 - line 418, column 32: " + [ acc.constructor.name, v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_acc, __copy_v);
+            };
+            return __tco_result;
+        };
+    };
+    return go(Data_List_Types.Nil.value);
+};
+var manyRec = function (dictMonadRec) {
+    return function (dictAlternative) {
+        return function (p) {
+            var go = function (acc) {
+                return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(Control_Alt.alt((dictAlternative.Plus1()).Alt0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())(Control_Monad_Rec_Class.Loop.create)(p))(Control_Applicative.pure(dictAlternative.Applicative0())(new Control_Monad_Rec_Class.Done(Data_Unit.unit))))(function (v) {
+                    return Control_Applicative.pure(dictAlternative.Applicative0())(Data_Bifunctor.bimap(Control_Monad_Rec_Class.bifunctorStep)(function (v1) {
+                        return new Data_List_Types.Cons(v1, acc);
+                    })(function (v1) {
+                        return reverse(acc);
+                    })(v));
+                });
+            };
+            return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go)(Data_List_Types.Nil.value);
+        };
+    };
+};
+var someRec = function (dictMonadRec) {
+    return function (dictAlternative) {
+        return function (v) {
+            return Control_Apply.apply((dictAlternative.Applicative0()).Apply0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())(Data_List_Types.Cons.create)(v))(manyRec(dictMonadRec)(dictAlternative)(v));
+        };
+    };
+};
+var some = function (dictAlternative) {
+    return function (dictLazy) {
+        return function (v) {
+            return Control_Apply.apply((dictAlternative.Applicative0()).Apply0())(Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0())(Data_List_Types.Cons.create)(v))(Control_Lazy.defer(dictLazy)(function (v1) {
+                return many(dictAlternative)(dictLazy)(v);
+            }));
+        };
+    };
+};
+var many = function (dictAlternative) {
+    return function (dictLazy) {
+        return function (v) {
+            return Control_Alt.alt((dictAlternative.Plus1()).Alt0())(some(dictAlternative)(dictLazy)(v))(Control_Applicative.pure(dictAlternative.Applicative0())(Data_List_Types.Nil.value));
+        };
+    };
+};
+var length = Data_Foldable.foldl(Data_List_Types.foldableList)(function (acc) {
+    return function (v) {
+        return acc + 1 | 0;
+    };
+})(0);
+var last = function (__copy_v) {
+    var __tco_done = false;
+    var __tco_result;
+    function __tco_loop(v) {
+        if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {
+            __tco_done = true;
+            return new Data_Maybe.Just(v.value0);
+        };
+        if (v instanceof Data_List_Types.Cons) {
+            __copy_v = v.value1;
+            return;
+        };
+        __tco_done = true;
+        return Data_Maybe.Nothing.value;
+    };
+    while (!__tco_done) {
+        __tco_result = __tco_loop(__copy_v);
+    };
+    return __tco_result;
+};
+var insertBy = function (v) {
+    return function (x) {
+        return function (v1) {
+            if (v1 instanceof Data_List_Types.Nil) {
+                return singleton(x);
+            };
+            if (v1 instanceof Data_List_Types.Cons) {
+                var v2 = v(x)(v1.value0);
+                if (v2 instanceof Data_Ordering.GT) {
+                    return new Data_List_Types.Cons(v1.value0, insertBy(v)(x)(v1.value1));
+                };
+                return new Data_List_Types.Cons(x, v1);
+            };
+            throw new Error("Failed pattern match at Data.List line 214, column 1 - line 214, column 31: " + [ v.constructor.name, x.constructor.name, v1.constructor.name ]);
+        };
+    };
+};
+var insertAt = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v === 0) {
+                return new Data_Maybe.Just(new Data_List_Types.Cons(v1, v2));
+            };
+            if (v2 instanceof Data_List_Types.Cons) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(function (v3) {
+                    return new Data_List_Types.Cons(v2.value0, v3);
+                })(insertAt(v - 1 | 0)(v1)(v2.value1));
+            };
+            return Data_Maybe.Nothing.value;
+        };
+    };
+};
+var insert = function (dictOrd) {
+    return insertBy(Data_Ord.compare(dictOrd));
+};
+var init = function (lst) {
+    return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
+        return v.init;
+    })(unsnoc(lst));
+};
+var index = function (__copy_v) {
+    return function (__copy_v1) {
+        var __tco_v = __copy_v;
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v, v1) {
+            if (v instanceof Data_List_Types.Nil) {
+                __tco_done = true;
+                return Data_Maybe.Nothing.value;
+            };
+            if (v instanceof Data_List_Types.Cons && v1 === 0) {
+                __tco_done = true;
+                return new Data_Maybe.Just(v.value0);
+            };
+            if (v instanceof Data_List_Types.Cons) {
+                __tco_v = v.value1;
+                __copy_v1 = v1 - 1 | 0;
+                return;
+            };
+            throw new Error("Failed pattern match at Data.List line 279, column 1 - line 279, column 22: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__tco_v, __copy_v1);
+        };
+        return __tco_result;
+    };
+};
+var head = function (v) {
+    if (v instanceof Data_List_Types.Nil) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Data_List_Types.Cons) {
+        return new Data_Maybe.Just(v.value0);
+    };
+    throw new Error("Failed pattern match at Data.List line 228, column 1 - line 228, column 19: " + [ v.constructor.name ]);
+};
+var transpose = function (v) {
+    if (v instanceof Data_List_Types.Nil) {
+        return Data_List_Types.Nil.value;
+    };
+    if (v instanceof Data_List_Types.Cons && v.value0 instanceof Data_List_Types.Nil) {
+        return transpose(v.value1);
+    };
+    if (v instanceof Data_List_Types.Cons && v.value0 instanceof Data_List_Types.Cons) {
+        return new Data_List_Types.Cons(new Data_List_Types.Cons(v.value0.value0, mapMaybe(head)(v.value1)), transpose(new Data_List_Types.Cons(v.value0.value1, mapMaybe(tail)(v.value1))));
+    };
+    throw new Error("Failed pattern match at Data.List line 727, column 1 - line 727, column 20: " + [ v.constructor.name ]);
+};
+var groupBy = function (v) {
+    return function (v1) {
+        if (v1 instanceof Data_List_Types.Nil) {
+            return Data_List_Types.Nil.value;
+        };
+        if (v1 instanceof Data_List_Types.Cons) {
+            var v2 = span(v(v1.value0))(v1.value1);
+            return new Data_List_Types.Cons(new Data_NonEmpty.NonEmpty(v1.value0, v2.init), groupBy(v)(v2.rest));
+        };
+        throw new Error("Failed pattern match at Data.List line 590, column 1 - line 590, column 20: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+};
+var group = function (dictEq) {
+    return groupBy(Data_Eq.eq(dictEq));
+};
+var group$prime = function (dictOrd) {
+    return function ($341) {
+        return group(dictOrd.Eq0())(sort(dictOrd)($341));
+    };
+};
+var fromFoldable = function (dictFoldable) {
+    return Data_Foldable.foldr(dictFoldable)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);
+};
+var foldM = function (dictMonad) {
+    return function (v) {
+        return function (a) {
+            return function (v1) {
+                if (v1 instanceof Data_List_Types.Nil) {
+                    return Control_Applicative.pure(dictMonad.Applicative0())(a);
+                };
+                if (v1 instanceof Data_List_Types.Cons) {
+                    return Control_Bind.bind(dictMonad.Bind1())(v(a)(v1.value0))(function (a$prime) {
+                        return foldM(dictMonad)(v)(a$prime)(v1.value1);
+                    });
+                };
+                throw new Error("Failed pattern match at Data.List line 738, column 1 - line 738, column 23: " + [ v.constructor.name, a.constructor.name, v1.constructor.name ]);
+            };
+        };
+    };
+};
+var findIndex = function (fn) {
+    var go = function (__copy_v) {
+        return function (__copy_v1) {
+            var __tco_v = __copy_v;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(v, v1) {
+                if (v1 instanceof Data_List_Types.Cons) {
+                    if (fn(v1.value0)) {
+                        __tco_done = true;
+                        return new Data_Maybe.Just(v);
+                    };
+                    if (Data_Boolean.otherwise) {
+                        __tco_v = v + 1 | 0;
+                        __copy_v1 = v1.value1;
+                        return;
+                    };
+                };
+                if (v1 instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return Data_Maybe.Nothing.value;
+                };
+                throw new Error("Failed pattern match at Data.List line 299, column 3 - line 300, column 44: " + [ v.constructor.name, v1.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_v, __copy_v1);
+            };
+            return __tco_result;
+        };
+    };
+    return go(0);
+};
+var findLastIndex = function (fn) {
+    return function (xs) {
+        return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
+            return (length(xs) - 1 | 0) - v | 0;
+        })(findIndex(fn)(reverse(xs)));
+    };
+};
+var filterM = function (dictMonad) {
+    return function (v) {
+        return function (v1) {
+            if (v1 instanceof Data_List_Types.Nil) {
+                return Control_Applicative.pure(dictMonad.Applicative0())(Data_List_Types.Nil.value);
+            };
+            if (v1 instanceof Data_List_Types.Cons) {
+                return Control_Bind.bind(dictMonad.Bind1())(v(v1.value0))(function (v2) {
+                    return Control_Bind.bind(dictMonad.Bind1())(filterM(dictMonad)(v)(v1.value1))(function (v3) {
+                        return Control_Applicative.pure(dictMonad.Applicative0())((function () {
+                            if (v2) {
+                                return new Data_List_Types.Cons(v1.value0, v3);
+                            };
+                            return v3;
+                        })());
+                    });
+                });
+            };
+            throw new Error("Failed pattern match at Data.List line 401, column 1 - line 401, column 25: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    };
+};
+var filter = function (p) {
+    var go = function (__copy_acc) {
+        return function (__copy_v) {
+            var __tco_acc = __copy_acc;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(acc, v) {
+                if (v instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return reverse(acc);
+                };
+                if (v instanceof Data_List_Types.Cons) {
+                    if (p(v.value0)) {
+                        __tco_acc = new Data_List_Types.Cons(v.value0, acc);
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    if (Data_Boolean.otherwise) {
+                        __tco_acc = acc;
+                        __copy_v = v.value1;
+                        return;
+                    };
+                };
+                throw new Error("Failed pattern match at Data.List line 385, column 12 - line 390, column 28: " + [ acc.constructor.name, v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_acc, __copy_v);
+            };
+            return __tco_result;
+        };
+    };
+    return go(Data_List_Types.Nil.value);
+};
+var intersectBy = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v1 instanceof Data_List_Types.Nil) {
+                return Data_List_Types.Nil.value;
+            };
+            if (v2 instanceof Data_List_Types.Nil) {
+                return Data_List_Types.Nil.value;
+            };
+            return filter(function (x) {
+                return Data_Foldable.any(Data_List_Types.foldableList)(Data_HeytingAlgebra.heytingAlgebraBoolean)(v(x))(v2);
+            })(v1);
+        };
+    };
+};
+var intersect = function (dictEq) {
+    return intersectBy(Data_Eq.eq(dictEq));
+};
+var nubBy = function (v) {
+    return function (v1) {
+        if (v1 instanceof Data_List_Types.Nil) {
+            return Data_List_Types.Nil.value;
+        };
+        if (v1 instanceof Data_List_Types.Cons) {
+            return new Data_List_Types.Cons(v1.value0, nubBy(v)(filter(function (y) {
+                return !v(v1.value0)(y);
+            })(v1.value1)));
+        };
+        throw new Error("Failed pattern match at Data.List line 619, column 1 - line 619, column 22: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+};
+var nub = function (dictEq) {
+    return nubBy(Data_Eq.eq(dictEq));
+};
+var eqPattern = function (dictEq) {
+    return new Data_Eq.Eq(function (x) {
+        return function (y) {
+            return Data_Eq.eq(Data_List_Types.eqList(dictEq))(x)(y);
+        };
+    });
+};
+var ordPattern = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqPattern(dictOrd.Eq0());
+    }, function (x) {
+        return function (y) {
+            return Data_Ord.compare(Data_List_Types.ordList(dictOrd))(x)(y);
+        };
+    });
+};
+var elemLastIndex = function (dictEq) {
+    return function (x) {
+        return findLastIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var elemIndex = function (dictEq) {
+    return function (x) {
+        return findIndex(function (v) {
+            return Data_Eq.eq(dictEq)(v)(x);
+        });
+    };
+};
+var dropWhile = function (p) {
+    var go = function (__copy_v) {
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v) {
+            if (v instanceof Data_List_Types.Cons && p(v.value0)) {
+                __copy_v = v.value1;
+                return;
+            };
+            __tco_done = true;
+            return v;
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    return go;
+};
+var drop = function (__copy_v) {
+    return function (__copy_v1) {
+        var __tco_v = __copy_v;
+        var __tco_done = false;
+        var __tco_result;
+        function __tco_loop(v, v1) {
+            if (v === 0) {
+                __tco_done = true;
+                return v1;
+            };
+            if (v1 instanceof Data_List_Types.Nil) {
+                __tco_done = true;
+                return Data_List_Types.Nil.value;
+            };
+            if (v1 instanceof Data_List_Types.Cons) {
+                __tco_v = v - 1 | 0;
+                __copy_v1 = v1.value1;
+                return;
+            };
+            throw new Error("Failed pattern match at Data.List line 535, column 1 - line 535, column 15: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+        while (!__tco_done) {
+            __tco_result = __tco_loop(__tco_v, __copy_v1);
+        };
+        return __tco_result;
+    };
+};
+var slice = function (start) {
+    return function (end) {
+        return function (xs) {
+            return take(end - start | 0)(drop(start)(xs));
+        };
+    };
+};
+var deleteBy = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v2 instanceof Data_List_Types.Nil) {
+                return Data_List_Types.Nil.value;
+            };
+            if (v2 instanceof Data_List_Types.Cons && v(v1)(v2.value0)) {
+                return v2.value1;
+            };
+            if (v2 instanceof Data_List_Types.Cons) {
+                return new Data_List_Types.Cons(v2.value0, deleteBy(v)(v1)(v2.value1));
+            };
+            throw new Error("Failed pattern match at Data.List line 646, column 1 - line 646, column 23: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+        };
+    };
+};
+var unionBy = function (eq) {
+    return function (xs) {
+        return function (ys) {
+            return Data_Semigroup.append(Data_List_Types.semigroupList)(xs)(Data_Foldable.foldl(Data_List_Types.foldableList)(Data_Function.flip(deleteBy(eq)))(nubBy(eq)(ys))(xs));
+        };
+    };
+};
+var union = function (dictEq) {
+    return unionBy(Data_Eq.eq(dictEq));
+};
+var deleteAt = function (v) {
+    return function (v1) {
+        if (v === 0 && v1 instanceof Data_List_Types.Cons) {
+            return new Data_Maybe.Just(v1.value1);
+        };
+        if (v1 instanceof Data_List_Types.Cons) {
+            return Data_Functor.map(Data_Maybe.functorMaybe)(function (v2) {
+                return new Data_List_Types.Cons(v1.value0, v2);
+            })(deleteAt(v - 1 | 0)(v1.value1));
+        };
+        return Data_Maybe.Nothing.value;
+    };
+};
+var $$delete = function (dictEq) {
+    return deleteBy(Data_Eq.eq(dictEq));
+};
+var difference = function (dictEq) {
+    return Data_Foldable.foldl(Data_List_Types.foldableList)(Data_Function.flip($$delete(dictEq)));
+};
+var concatMap = Data_Function.flip(Control_Bind.bind(Data_List_Types.bindList));
+var concat = function (v) {
+    return Control_Bind.bind(Data_List_Types.bindList)(v)(Control_Category.id(Control_Category.categoryFn));
+};
+var catMaybes = mapMaybe(Control_Category.id(Control_Category.categoryFn));
+var alterAt = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v === 0 && v2 instanceof Data_List_Types.Cons) {
+                return Data_Maybe.Just.create((function () {
+                    var v3 = v1(v2.value0);
+                    if (v3 instanceof Data_Maybe.Nothing) {
+                        return v2.value1;
+                    };
+                    if (v3 instanceof Data_Maybe.Just) {
+                        return new Data_List_Types.Cons(v3.value0, v2.value1);
+                    };
+                    throw new Error("Failed pattern match at Data.List line 349, column 3 - line 351, column 23: " + [ v3.constructor.name ]);
+                })());
+            };
+            if (v2 instanceof Data_List_Types.Cons) {
+                return Data_Functor.map(Data_Maybe.functorMaybe)(function (v3) {
+                    return new Data_List_Types.Cons(v2.value0, v3);
+                })(alterAt(v - 1 | 0)(v1)(v2.value1));
+            };
+            return Data_Maybe.Nothing.value;
+        };
+    };
+};
+var modifyAt = function (n) {
+    return function (f) {
+        return alterAt(n)(function ($342) {
+            return Data_Maybe.Just.create(f($342));
+        });
+    };
+};
+module.exports = {
+    Pattern: Pattern, 
+    alterAt: alterAt, 
+    catMaybes: catMaybes, 
+    concat: concat, 
+    concatMap: concatMap, 
+    "delete": $$delete, 
+    deleteAt: deleteAt, 
+    deleteBy: deleteBy, 
+    difference: difference, 
+    drop: drop, 
+    dropWhile: dropWhile, 
+    elemIndex: elemIndex, 
+    elemLastIndex: elemLastIndex, 
+    filter: filter, 
+    filterM: filterM, 
+    findIndex: findIndex, 
+    findLastIndex: findLastIndex, 
+    foldM: foldM, 
+    fromFoldable: fromFoldable, 
+    group: group, 
+    "group'": group$prime, 
+    groupBy: groupBy, 
+    head: head, 
+    index: index, 
+    init: init, 
+    insert: insert, 
+    insertAt: insertAt, 
+    insertBy: insertBy, 
+    intersect: intersect, 
+    intersectBy: intersectBy, 
+    last: last, 
+    length: length, 
+    many: many, 
+    manyRec: manyRec, 
+    mapMaybe: mapMaybe, 
+    mapWithIndex: mapWithIndex, 
+    modifyAt: modifyAt, 
+    nub: nub, 
+    nubBy: nubBy, 
+    "null": $$null, 
+    partition: partition, 
+    range: range, 
+    reverse: reverse, 
+    singleton: singleton, 
+    slice: slice, 
+    snoc: snoc, 
+    some: some, 
+    someRec: someRec, 
+    sort: sort, 
+    sortBy: sortBy, 
+    span: span, 
+    stripPrefix: stripPrefix, 
+    tail: tail, 
+    take: take, 
+    takeWhile: takeWhile, 
+    toUnfoldable: toUnfoldable, 
+    transpose: transpose, 
+    uncons: uncons, 
+    union: union, 
+    unionBy: unionBy, 
+    unsnoc: unsnoc, 
+    unzip: unzip, 
+    updateAt: updateAt, 
+    zip: zip, 
+    zipWith: zipWith, 
+    zipWithA: zipWithA, 
+    eqPattern: eqPattern, 
+    ordPattern: ordPattern, 
+    newtypePattern: newtypePattern, 
+    showPattern: showPattern
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Lazy":51,"../Control.Monad.Rec.Class":78,"../Control.Semigroupoid":93,"../Data.Bifunctor":128,"../Data.Boolean":130,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.List.Types":199,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.NonEmpty":216,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Data.Unit":259,"../Prelude":278}],201:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_List = require("../Data.List");
+var Data_List_Lazy = require("../Data.List.Lazy");
+var Data_List_Lazy_Types = require("../Data.List.Lazy.Types");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Partial_Unsafe = require("../Partial.Unsafe");
+var Prelude = require("../Prelude");
+var Leaf = (function () {
+    function Leaf() {
+
+    };
+    Leaf.value = new Leaf();
+    return Leaf;
+})();
+var Two = (function () {
+    function Two(value0, value1, value2, value3) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+        this.value3 = value3;
+    };
+    Two.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return function (value3) {
+                    return new Two(value0, value1, value2, value3);
+                };
+            };
+        };
+    };
+    return Two;
+})();
+var Three = (function () {
+    function Three(value0, value1, value2, value3, value4, value5, value6) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+        this.value3 = value3;
+        this.value4 = value4;
+        this.value5 = value5;
+        this.value6 = value6;
+    };
+    Three.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return function (value3) {
+                    return function (value4) {
+                        return function (value5) {
+                            return function (value6) {
+                                return new Three(value0, value1, value2, value3, value4, value5, value6);
+                            };
+                        };
+                    };
+                };
+            };
+        };
+    };
+    return Three;
+})();
+var TwoLeft = (function () {
+    function TwoLeft(value0, value1, value2) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+    };
+    TwoLeft.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return new TwoLeft(value0, value1, value2);
+            };
+        };
+    };
+    return TwoLeft;
+})();
+var TwoRight = (function () {
+    function TwoRight(value0, value1, value2) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+    };
+    TwoRight.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return new TwoRight(value0, value1, value2);
+            };
+        };
+    };
+    return TwoRight;
+})();
+var ThreeLeft = (function () {
+    function ThreeLeft(value0, value1, value2, value3, value4, value5) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+        this.value3 = value3;
+        this.value4 = value4;
+        this.value5 = value5;
+    };
+    ThreeLeft.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return function (value3) {
+                    return function (value4) {
+                        return function (value5) {
+                            return new ThreeLeft(value0, value1, value2, value3, value4, value5);
+                        };
+                    };
+                };
+            };
+        };
+    };
+    return ThreeLeft;
+})();
+var ThreeMiddle = (function () {
+    function ThreeMiddle(value0, value1, value2, value3, value4, value5) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+        this.value3 = value3;
+        this.value4 = value4;
+        this.value5 = value5;
+    };
+    ThreeMiddle.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return function (value3) {
+                    return function (value4) {
+                        return function (value5) {
+                            return new ThreeMiddle(value0, value1, value2, value3, value4, value5);
+                        };
+                    };
+                };
+            };
+        };
+    };
+    return ThreeMiddle;
+})();
+var ThreeRight = (function () {
+    function ThreeRight(value0, value1, value2, value3, value4, value5) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+        this.value3 = value3;
+        this.value4 = value4;
+        this.value5 = value5;
+    };
+    ThreeRight.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return function (value3) {
+                    return function (value4) {
+                        return function (value5) {
+                            return new ThreeRight(value0, value1, value2, value3, value4, value5);
+                        };
+                    };
+                };
+            };
+        };
+    };
+    return ThreeRight;
+})();
+var KickUp = (function () {
+    function KickUp(value0, value1, value2, value3) {
+        this.value0 = value0;
+        this.value1 = value1;
+        this.value2 = value2;
+        this.value3 = value3;
+    };
+    KickUp.create = function (value0) {
+        return function (value1) {
+            return function (value2) {
+                return function (value3) {
+                    return new KickUp(value0, value1, value2, value3);
+                };
+            };
+        };
+    };
+    return KickUp;
+})();
+var values = function (v) {
+    if (v instanceof Leaf) {
+        return Data_List_Types.Nil.value;
+    };
+    if (v instanceof Two) {
+        return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(values(v.value3)));
+    };
+    if (v instanceof Three) {
+        return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value5))(values(v.value6)))));
+    };
+    throw new Error("Failed pattern match at Data.Map line 554, column 1 - line 554, column 18: " + [ v.constructor.name ]);
+};
+var size = function (v) {
+    if (v instanceof Leaf) {
+        return 0;
+    };
+    if (v instanceof Two) {
+        return (1 + size(v.value0) | 0) + size(v.value3) | 0;
+    };
+    if (v instanceof Three) {
+        return ((2 + size(v.value0) | 0) + size(v.value3) | 0) + size(v.value6) | 0;
+    };
+    throw new Error("Failed pattern match at Data.Map line 581, column 1 - line 582, column 1: " + [ v.constructor.name ]);
+};
+var singleton = function (k) {
+    return function (v) {
+        return new Two(Leaf.value, k, v, Leaf.value);
+    };
+};
+var toAscUnfoldable = function (dictUnfoldable) {
+    return function (m) {
+        var go = function (__copy_v) {
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(v) {
+                if (v instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return Data_Maybe.Nothing.value;
+                };
+                if (v instanceof Data_List_Types.Cons) {
+                    if (v.value0 instanceof Leaf) {
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    if (v.value0 instanceof Two && (v.value0.value0 instanceof Leaf && v.value0.value3 instanceof Leaf)) {
+                        __tco_done = true;
+                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), v.value1));
+                    };
+                    if (v.value0 instanceof Two && v.value0.value0 instanceof Leaf) {
+                        __tco_done = true;
+                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), new Data_List_Types.Cons(v.value0.value3, v.value1)));
+                    };
+                    if (v.value0 instanceof Two) {
+                        __copy_v = new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(singleton(v.value0.value1)(v.value0.value2), new Data_List_Types.Cons(v.value0.value3, v.value1)));
+                        return;
+                    };
+                    if (v.value0 instanceof Three) {
+                        __copy_v = new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(singleton(v.value0.value1)(v.value0.value2), new Data_List_Types.Cons(v.value0.value3, new Data_List_Types.Cons(singleton(v.value0.value4)(v.value0.value5), new Data_List_Types.Cons(v.value0.value6, v.value1)))));
+                        return;
+                    };
+                    throw new Error("Failed pattern match at Data.Map line 535, column 18 - line 544, column 71: " + [ v.value0.constructor.name ]);
+                };
+                throw new Error("Failed pattern match at Data.Map line 533, column 21 - line 544, column 71: " + [ v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__copy_v);
+            };
+            return __tco_result;
+        };
+        return Data_Unfoldable.unfoldr(dictUnfoldable)(go)(new Data_List_Types.Cons(m, Data_List_Types.Nil.value));
+    };
+};
+var toAscArray = toAscUnfoldable(Data_Unfoldable.unfoldableArray);
+var toUnfoldable = function (dictUnfoldable) {
+    return function (m) {
+        var go = function (__copy_v) {
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(v) {
+                if (v instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return Data_Maybe.Nothing.value;
+                };
+                if (v instanceof Data_List_Types.Cons) {
+                    if (v.value0 instanceof Leaf) {
+                        __copy_v = v.value1;
+                        return;
+                    };
+                    if (v.value0 instanceof Two) {
+                        __tco_done = true;
+                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(v.value0.value3, v.value1))));
+                    };
+                    if (v.value0 instanceof Three) {
+                        __tco_done = true;
+                        return Data_Maybe.Just.create(new Data_Tuple.Tuple(new Data_Tuple.Tuple(v.value0.value1, v.value0.value2), new Data_List_Types.Cons(singleton(v.value0.value4)(v.value0.value5), new Data_List_Types.Cons(v.value0.value0, new Data_List_Types.Cons(v.value0.value3, new Data_List_Types.Cons(v.value0.value6, v.value1))))));
+                    };
+                    throw new Error("Failed pattern match at Data.Map line 524, column 18 - line 529, column 77: " + [ v.value0.constructor.name ]);
+                };
+                throw new Error("Failed pattern match at Data.Map line 522, column 18 - line 529, column 77: " + [ v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__copy_v);
+            };
+            return __tco_result;
+        };
+        return Data_Unfoldable.unfoldr(dictUnfoldable)(go)(new Data_List_Types.Cons(m, Data_List_Types.Nil.value));
+    };
+};
+var showTree = function (dictShow) {
+    return function (dictShow1) {
+        return function (v) {
+            if (v instanceof Leaf) {
+                return "Leaf";
+            };
+            if (v instanceof Two) {
+                return "Two (" + (showTree(dictShow)(dictShow1)(v.value0) + (") (" + (Data_Show.show(dictShow)(v.value1) + (") (" + (Data_Show.show(dictShow1)(v.value2) + (") (" + (showTree(dictShow)(dictShow1)(v.value3) + ")")))))));
+            };
+            if (v instanceof Three) {
+                return "Three (" + (showTree(dictShow)(dictShow1)(v.value0) + (") (" + (Data_Show.show(dictShow)(v.value1) + (") (" + (Data_Show.show(dictShow1)(v.value2) + (") (" + (showTree(dictShow)(dictShow1)(v.value3) + (") (" + (Data_Show.show(dictShow)(v.value4) + (") (" + (Data_Show.show(dictShow1)(v.value5) + (") (" + (showTree(dictShow)(dictShow1)(v.value6) + ")")))))))))))));
+            };
+            throw new Error("Failed pattern match at Data.Map line 116, column 1 - line 117, column 1: " + [ v.constructor.name ]);
+        };
+    };
+};
+var showMap = function (dictShow) {
+    return function (dictShow1) {
+        return new Data_Show.Show(function (m) {
+            return "(fromFoldable " + (Data_Show.show(Data_Show.showArray(Data_Tuple.showTuple(dictShow)(dictShow1)))(toAscArray(m)) + ")");
+        });
+    };
+};
+var mapWithKey = function (v) {
+    return function (v1) {
+        if (v1 instanceof Leaf) {
+            return Leaf.value;
+        };
+        if (v1 instanceof Two) {
+            return new Two(mapWithKey(v)(v1.value0), v1.value1, v(v1.value1)(v1.value2), mapWithKey(v)(v1.value3));
+        };
+        if (v1 instanceof Three) {
+            return new Three(mapWithKey(v)(v1.value0), v1.value1, v(v1.value1)(v1.value2), mapWithKey(v)(v1.value3), v1.value4, v(v1.value4)(v1.value5), mapWithKey(v)(v1.value6));
+        };
+        throw new Error("Failed pattern match at Data.Map line 587, column 1 - line 587, column 25: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+};
+var lookupLE = function (dictOrd) {
+    return function (k) {
+        var comp = Data_Ord.compare(dictOrd);
+        var go = function (v) {
+            if (v instanceof Leaf) {
+                return Data_Maybe.Nothing.value;
+            };
+            if (v instanceof Two) {
+                var v2 = comp(k)(v.value1);
+                if (v2 instanceof Data_Ordering.EQ) {
+                    return new Data_Maybe.Just({
+                        key: v.value1, 
+                        value: v.value2
+                    });
+                };
+                if (v2 instanceof Data_Ordering.GT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value1, 
+                        value: v.value2
+                    })(go(v.value3)));
+                };
+                if (v2 instanceof Data_Ordering.LT) {
+                    return go(v.value0);
+                };
+                throw new Error("Failed pattern match at Data.Map line 187, column 33 - line 190, column 20: " + [ v2.constructor.name ]);
+            };
+            if (v instanceof Three) {
+                var v3 = comp(k)(v.value4);
+                if (v3 instanceof Data_Ordering.EQ) {
+                    return new Data_Maybe.Just({
+                        key: v.value4, 
+                        value: v.value5
+                    });
+                };
+                if (v3 instanceof Data_Ordering.GT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value4, 
+                        value: v.value5
+                    })(go(v.value6)));
+                };
+                if (v3 instanceof Data_Ordering.LT) {
+                    return go(new Two(v.value0, v.value1, v.value2, v.value3));
+                };
+                throw new Error("Failed pattern match at Data.Map line 191, column 45 - line 194, column 36: " + [ v3.constructor.name ]);
+            };
+            throw new Error("Failed pattern match at Data.Map line 181, column 14 - line 194, column 36: " + [ v.constructor.name ]);
+        };
+        return go;
+    };
+};
+var lookupGE = function (dictOrd) {
+    return function (k) {
+        var comp = Data_Ord.compare(dictOrd);
+        var go = function (v) {
+            if (v instanceof Leaf) {
+                return Data_Maybe.Nothing.value;
+            };
+            if (v instanceof Two) {
+                var v2 = comp(k)(v.value1);
+                if (v2 instanceof Data_Ordering.EQ) {
+                    return new Data_Maybe.Just({
+                        key: v.value1, 
+                        value: v.value2
+                    });
+                };
+                if (v2 instanceof Data_Ordering.LT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value1, 
+                        value: v.value2
+                    })(go(v.value0)));
+                };
+                if (v2 instanceof Data_Ordering.GT) {
+                    return go(v.value3);
+                };
+                throw new Error("Failed pattern match at Data.Map line 221, column 33 - line 224, column 21: " + [ v2.constructor.name ]);
+            };
+            if (v instanceof Three) {
+                var v3 = comp(k)(v.value1);
+                if (v3 instanceof Data_Ordering.EQ) {
+                    return new Data_Maybe.Just({
+                        key: v.value1, 
+                        value: v.value2
+                    });
+                };
+                if (v3 instanceof Data_Ordering.LT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value1, 
+                        value: v.value2
+                    })(go(v.value0)));
+                };
+                if (v3 instanceof Data_Ordering.GT) {
+                    return go(new Two(v.value3, v.value4, v.value5, v.value6));
+                };
+                throw new Error("Failed pattern match at Data.Map line 225, column 45 - line 228, column 37: " + [ v3.constructor.name ]);
+            };
+            throw new Error("Failed pattern match at Data.Map line 215, column 14 - line 228, column 37: " + [ v.constructor.name ]);
+        };
+        return go;
+    };
+};
+var lookup = function (dictOrd) {
+    return function (k) {
+        var comp = Data_Ord.compare(dictOrd);
+        var go = function (__copy_v) {
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(v) {
+                if (v instanceof Leaf) {
+                    __tco_done = true;
+                    return Data_Maybe.Nothing.value;
+                };
+                if (v instanceof Two) {
+                    var v2 = comp(k)(v.value1);
+                    if (v2 instanceof Data_Ordering.EQ) {
+                        __tco_done = true;
+                        return new Data_Maybe.Just(v.value2);
+                    };
+                    if (v2 instanceof Data_Ordering.LT) {
+                        __copy_v = v.value0;
+                        return;
+                    };
+                    __copy_v = v.value3;
+                    return;
+                };
+                if (v instanceof Three) {
+                    var v3 = comp(k)(v.value1);
+                    if (v3 instanceof Data_Ordering.EQ) {
+                        __tco_done = true;
+                        return new Data_Maybe.Just(v.value2);
+                    };
+                    var v4 = comp(k)(v.value4);
+                    if (v4 instanceof Data_Ordering.EQ) {
+                        __tco_done = true;
+                        return new Data_Maybe.Just(v.value5);
+                    };
+                    if (v3 instanceof Data_Ordering.LT) {
+                        __copy_v = v.value0;
+                        return;
+                    };
+                    if (v4 instanceof Data_Ordering.GT) {
+                        __copy_v = v.value6;
+                        return;
+                    };
+                    __copy_v = v.value3;
+                    return;
+                };
+                throw new Error("Failed pattern match at Data.Map line 157, column 12 - line 176, column 29: " + [ v.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__copy_v);
+            };
+            return __tco_result;
+        };
+        return go;
+    };
+};
+var member = function (dictOrd) {
+    return function (k) {
+        return function (m) {
+            return Data_Maybe.isJust(lookup(dictOrd)(k)(m));
+        };
+    };
+};
+var keys = function (v) {
+    if (v instanceof Leaf) {
+        return Data_List_Types.Nil.value;
+    };
+    if (v instanceof Two) {
+        return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(keys(v.value3)));
+    };
+    if (v instanceof Three) {
+        return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value4))(keys(v.value6)))));
+    };
+    throw new Error("Failed pattern match at Data.Map line 548, column 1 - line 548, column 16: " + [ v.constructor.name ]);
+};
+var isSubmap = function (dictOrd) {
+    return function (dictEq) {
+        return function (m1) {
+            return function (m2) {
+                var f = function (v) {
+                    return Data_Eq.eq(Data_Maybe.eqMaybe(dictEq))(lookup(dictOrd)(v.value0)(m2))(new Data_Maybe.Just(v.value1));
+                };
+                return Data_Foldable.all(Data_List_Lazy_Types.foldableList)(Data_HeytingAlgebra.heytingAlgebraBoolean)(f)(toUnfoldable(Data_List_Lazy_Types.unfoldableList)(m1));
+            };
+        };
+    };
+};
+var isEmpty = function (v) {
+    if (v instanceof Leaf) {
+        return true;
+    };
+    return false;
+};
+var functorMap = new Data_Functor.Functor(function (v) {
+    return function (v1) {
+        if (v1 instanceof Leaf) {
+            return Leaf.value;
+        };
+        if (v1 instanceof Two) {
+            return new Two(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3));
+        };
+        if (v1 instanceof Three) {
+            return new Three(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3), v1.value4, v(v1.value5), Data_Functor.map(functorMap)(v)(v1.value6));
+        };
+        throw new Error("Failed pattern match at Data.Map line 88, column 3 - line 88, column 20: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var fromZipper = function (__copy_dictOrd) {
+    return function (__copy_v) {
+        return function (__copy_tree) {
+            var __tco_dictOrd = __copy_dictOrd;
+            var __tco_v = __copy_v;
+            var __tco_done = false;
+            var __tco_result;
+            function __tco_loop(dictOrd, v, tree) {
+                if (v instanceof Data_List_Types.Nil) {
+                    __tco_done = true;
+                    return tree;
+                };
+                if (v instanceof Data_List_Types.Cons) {
+                    if (v.value0 instanceof TwoLeft) {
+                        __tco_dictOrd = dictOrd;
+                        __tco_v = v.value1;
+                        __copy_tree = new Two(tree, v.value0.value0, v.value0.value1, v.value0.value2);
+                        return;
+                    };
+                    if (v.value0 instanceof TwoRight) {
+                        __tco_dictOrd = dictOrd;
+                        __tco_v = v.value1;
+                        __copy_tree = new Two(v.value0.value0, v.value0.value1, v.value0.value2, tree);
+                        return;
+                    };
+                    if (v.value0 instanceof ThreeLeft) {
+                        __tco_dictOrd = dictOrd;
+                        __tco_v = v.value1;
+                        __copy_tree = new Three(tree, v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5);
+                        return;
+                    };
+                    if (v.value0 instanceof ThreeMiddle) {
+                        __tco_dictOrd = dictOrd;
+                        __tco_v = v.value1;
+                        __copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, tree, v.value0.value3, v.value0.value4, v.value0.value5);
+                        return;
+                    };
+                    if (v.value0 instanceof ThreeRight) {
+                        __tco_dictOrd = dictOrd;
+                        __tco_v = v.value1;
+                        __copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5, tree);
+                        return;
+                    };
+                    throw new Error("Failed pattern match at Data.Map line 376, column 3 - line 381, column 88: " + [ v.value0.constructor.name ]);
+                };
+                throw new Error("Failed pattern match at Data.Map line 374, column 1 - line 374, column 27: " + [ v.constructor.name, tree.constructor.name ]);
+            };
+            while (!__tco_done) {
+                __tco_result = __tco_loop(__tco_dictOrd, __tco_v, __copy_tree);
+            };
+            return __tco_result;
+        };
+    };
+};
+var insert = function (dictOrd) {
+    return function (k) {
+        return function (v) {
+            var up = function (__copy_v1) {
+                return function (__copy_v2) {
+                    var __tco_v1 = __copy_v1;
+                    var __tco_done = false;
+                    var __tco_result;
+                    function __tco_loop(v1, v2) {
+                        if (v1 instanceof Data_List_Types.Nil) {
+                            __tco_done = true;
+                            return new Two(v2.value0, v2.value1, v2.value2, v2.value3);
+                        };
+                        if (v1 instanceof Data_List_Types.Cons) {
+                            if (v1.value0 instanceof TwoLeft) {
+                                __tco_done = true;
+                                return fromZipper(dictOrd)(v1.value1)(new Three(v2.value0, v2.value1, v2.value2, v2.value3, v1.value0.value0, v1.value0.value1, v1.value0.value2));
+                            };
+                            if (v1.value0 instanceof TwoRight) {
+                                __tco_done = true;
+                                return fromZipper(dictOrd)(v1.value1)(new Three(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0, v2.value1, v2.value2, v2.value3));
+                            };
+                            if (v1.value0 instanceof ThreeLeft) {
+                                __tco_v1 = v1.value1;
+                                __copy_v2 = new KickUp(new Two(v2.value0, v2.value1, v2.value2, v2.value3), v1.value0.value0, v1.value0.value1, new Two(v1.value0.value2, v1.value0.value3, v1.value0.value4, v1.value0.value5));
+                                return;
+                            };
+                            if (v1.value0 instanceof ThreeMiddle) {
+                                __tco_v1 = v1.value1;
+                                __copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0), v2.value1, v2.value2, new Two(v2.value3, v1.value0.value3, v1.value0.value4, v1.value0.value5));
+                                return;
+                            };
+                            if (v1.value0 instanceof ThreeRight) {
+                                __tco_v1 = v1.value1;
+                                __copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v1.value0.value3), v1.value0.value4, v1.value0.value5, new Two(v2.value0, v2.value1, v2.value2, v2.value3));
+                                return;
+                            };
+                            throw new Error("Failed pattern match at Data.Map line 412, column 5 - line 417, column 108: " + [ v1.value0.constructor.name, v2.constructor.name ]);
+                        };
+                        throw new Error("Failed pattern match at Data.Map line 410, column 3 - line 410, column 58: " + [ v1.constructor.name, v2.constructor.name ]);
+                    };
+                    while (!__tco_done) {
+                        __tco_result = __tco_loop(__tco_v1, __copy_v2);
+                    };
+                    return __tco_result;
+                };
+            };
+            var comp = Data_Ord.compare(dictOrd);
+            var down = function (__copy_ctx) {
+                return function (__copy_v1) {
+                    var __tco_ctx = __copy_ctx;
+                    var __tco_done = false;
+                    var __tco_result;
+                    function __tco_loop(ctx, v1) {
+                        if (v1 instanceof Leaf) {
+                            __tco_done = true;
+                            return up(ctx)(new KickUp(Leaf.value, k, v, Leaf.value));
+                        };
+                        if (v1 instanceof Two) {
+                            var v2 = comp(k)(v1.value1);
+                            if (v2 instanceof Data_Ordering.EQ) {
+                                __tco_done = true;
+                                return fromZipper(dictOrd)(ctx)(new Two(v1.value0, k, v, v1.value3));
+                            };
+                            if (v2 instanceof Data_Ordering.LT) {
+                                __tco_ctx = new Data_List_Types.Cons(new TwoLeft(v1.value1, v1.value2, v1.value3), ctx);
+                                __copy_v1 = v1.value0;
+                                return;
+                            };
+                            __tco_ctx = new Data_List_Types.Cons(new TwoRight(v1.value0, v1.value1, v1.value2), ctx);
+                            __copy_v1 = v1.value3;
+                            return;
+                        };
+                        if (v1 instanceof Three) {
+                            var v3 = comp(k)(v1.value1);
+                            if (v3 instanceof Data_Ordering.EQ) {
+                                __tco_done = true;
+                                return fromZipper(dictOrd)(ctx)(new Three(v1.value0, k, v, v1.value3, v1.value4, v1.value5, v1.value6));
+                            };
+                            var v4 = comp(k)(v1.value4);
+                            if (v4 instanceof Data_Ordering.EQ) {
+                                __tco_done = true;
+                                return fromZipper(dictOrd)(ctx)(new Three(v1.value0, v1.value1, v1.value2, v1.value3, k, v, v1.value6));
+                            };
+                            if (v3 instanceof Data_Ordering.LT) {
+                                __tco_ctx = new Data_List_Types.Cons(new ThreeLeft(v1.value1, v1.value2, v1.value3, v1.value4, v1.value5, v1.value6), ctx);
+                                __copy_v1 = v1.value0;
+                                return;
+                            };
+                            if (v3 instanceof Data_Ordering.GT && v4 instanceof Data_Ordering.LT) {
+                                __tco_ctx = new Data_List_Types.Cons(new ThreeMiddle(v1.value0, v1.value1, v1.value2, v1.value4, v1.value5, v1.value6), ctx);
+                                __copy_v1 = v1.value3;
+                                return;
+                            };
+                            __tco_ctx = new Data_List_Types.Cons(new ThreeRight(v1.value0, v1.value1, v1.value2, v1.value3, v1.value4, v1.value5), ctx);
+                            __copy_v1 = v1.value6;
+                            return;
+                        };
+                        throw new Error("Failed pattern match at Data.Map line 393, column 3 - line 393, column 48: " + [ ctx.constructor.name, v1.constructor.name ]);
+                    };
+                    while (!__tco_done) {
+                        __tco_result = __tco_loop(__tco_ctx, __copy_v1);
+                    };
+                    return __tco_result;
+                };
+            };
+            return down(Data_List_Types.Nil.value);
+        };
+    };
+};
+var pop = function (dictOrd) {
+    return function (k) {
+        var up = function (ctxs) {
+            return function (tree) {
+                if (ctxs instanceof Data_List_Types.Nil) {
+                    return tree;
+                };
+                if (ctxs instanceof Data_List_Types.Cons) {
+                    var __unused = function (dictPartial1) {
+                        return function ($dollar51) {
+                            return $dollar51;
+                        };
+                    };
+                    return __unused()((function () {
+                        if (ctxs.value0 instanceof TwoLeft && (ctxs.value0.value2 instanceof Leaf && tree instanceof Leaf)) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value));
+                        };
+                        if (ctxs.value0 instanceof TwoRight && (ctxs.value0.value0 instanceof Leaf && tree instanceof Leaf)) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value));
+                        };
+                        if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Two) {
+                            return up(ctxs.value1)(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3));
+                        };
+                        if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Two) {
+                            return up(ctxs.value1)(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree));
+                        };
+                        if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Three) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6)));
+                        };
+                        if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Three) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree)));
+                        };
+                        if (ctxs.value0 instanceof ThreeLeft && (ctxs.value0.value2 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
+                        };
+                        if (ctxs.value0 instanceof ThreeMiddle && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
+                        };
+                        if (ctxs.value0 instanceof ThreeRight && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value3 instanceof Leaf && tree instanceof Leaf))) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value4, ctxs.value0.value5, Leaf.value));
+                        };
+                        if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Two) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                        };
+                        if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Two) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                        };
+                        if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Two) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0, ctxs.value0.value5.value1, ctxs.value0.value5.value2, ctxs.value0.value5.value3)));
+                        };
+                        if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Two) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3, ctxs.value0.value4, ctxs.value0.value5, tree)));
+                        };
+                        if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Three) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                        };
+                        if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Three) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                        };
+                        if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Three) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0), ctxs.value0.value5.value1, ctxs.value0.value5.value2, new Two(ctxs.value0.value5.value3, ctxs.value0.value5.value4, ctxs.value0.value5.value5, ctxs.value0.value5.value6)));
+                        };
+                        if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Three) {
+                            return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3), ctxs.value0.value3.value4, ctxs.value0.value3.value5, new Two(ctxs.value0.value3.value6, ctxs.value0.value4, ctxs.value0.value5, tree)));
+                        };
+                        throw new Error("Failed pattern match at Data.Map line 462, column 9 - line 479, column 136: " + [ ctxs.value0.constructor.name, tree.constructor.name ]);
+                    })());
+                };
+                throw new Error("Failed pattern match at Data.Map line 459, column 5 - line 479, column 136: " + [ ctxs.constructor.name ]);
+            };
+        };
+        var removeMaxNode = function (ctx) {
+            return function (m) {
+                var __unused = function (dictPartial1) {
+                    return function ($dollar53) {
+                        return $dollar53;
+                    };
+                };
+                return __unused()((function () {
+                    if (m instanceof Two && (m.value0 instanceof Leaf && m.value3 instanceof Leaf)) {
+                        return up(ctx)(Leaf.value);
+                    };
+                    if (m instanceof Two) {
+                        return removeMaxNode(new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx))(m.value3);
+                    };
+                    if (m instanceof Three && (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf))) {
+                        return up(new Data_List_Types.Cons(new TwoRight(Leaf.value, m.value1, m.value2), ctx))(Leaf.value);
+                    };
+                    if (m instanceof Three) {
+                        return removeMaxNode(new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx))(m.value6);
+                    };
+                    throw new Error("Failed pattern match at Data.Map line 491, column 5 - line 495, column 107: " + [ m.constructor.name ]);
+                })());
+            };
+        };
+        var maxNode = function (m) {
+            var __unused = function (dictPartial1) {
+                return function ($dollar55) {
+                    return $dollar55;
+                };
+            };
+            return __unused()((function () {
+                if (m instanceof Two && m.value3 instanceof Leaf) {
+                    return {
+                        key: m.value1, 
+                        value: m.value2
+                    };
+                };
+                if (m instanceof Two) {
+                    return maxNode(m.value3);
+                };
+                if (m instanceof Three && m.value6 instanceof Leaf) {
+                    return {
+                        key: m.value4, 
+                        value: m.value5
+                    };
+                };
+                if (m instanceof Three) {
+                    return maxNode(m.value6);
+                };
+                throw new Error("Failed pattern match at Data.Map line 482, column 33 - line 486, column 45: " + [ m.constructor.name ]);
+            })());
+        };
+        var comp = Data_Ord.compare(dictOrd);
+        var down = function (__copy_ctx) {
+            return function (__copy_m) {
+                var __tco_ctx = __copy_ctx;
+                var __tco_done = false;
+                var __tco_result;
+                function __tco_loop(ctx, m) {
+                    if (m instanceof Leaf) {
+                        __tco_done = true;
+                        return Data_Maybe.Nothing.value;
+                    };
+                    if (m instanceof Two) {
+                        var v = comp(k)(m.value1);
+                        if (m.value3 instanceof Leaf && v instanceof Data_Ordering.EQ) {
+                            __tco_done = true;
+                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, up(ctx)(Leaf.value)));
+                        };
+                        if (v instanceof Data_Ordering.EQ) {
+                            var max = maxNode(m.value0);
+                            __tco_done = true;
+                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new TwoLeft(max.key, max.value, m.value3), ctx))(m.value0)));
+                        };
+                        if (v instanceof Data_Ordering.LT) {
+                            __tco_ctx = new Data_List_Types.Cons(new TwoLeft(m.value1, m.value2, m.value3), ctx);
+                            __copy_m = m.value0;
+                            return;
+                        };
+                        __tco_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);
+                        __copy_m = m.value3;
+                        return;
+                    };
+                    if (m instanceof Three) {
+                        var leaves = (function () {
+                            if (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf)) {
+                                return true;
+                            };
+                            return false;
+                        })();
+                        var v = comp(k)(m.value4);
+                        var v3 = comp(k)(m.value1);
+                        if (leaves && v3 instanceof Data_Ordering.EQ) {
+                            __tco_done = true;
+                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value4, m.value5, Leaf.value))));
+                        };
+                        if (leaves && v instanceof Data_Ordering.EQ) {
+                            __tco_done = true;
+                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value1, m.value2, Leaf.value))));
+                        };
+                        if (v3 instanceof Data_Ordering.EQ) {
+                            var max = maxNode(m.value0);
+                            __tco_done = true;
+                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new ThreeLeft(max.key, max.value, m.value3, m.value4, m.value5, m.value6), ctx))(m.value0)));
+                        };
+                        if (v instanceof Data_Ordering.EQ) {
+                            var max = maxNode(m.value3);
+                            __tco_done = true;
+                            return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, removeMaxNode(new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, max.key, max.value, m.value6), ctx))(m.value3)));
+                        };
+                        if (v3 instanceof Data_Ordering.LT) {
+                            __tco_ctx = new Data_List_Types.Cons(new ThreeLeft(m.value1, m.value2, m.value3, m.value4, m.value5, m.value6), ctx);
+                            __copy_m = m.value0;
+                            return;
+                        };
+                        if (v3 instanceof Data_Ordering.GT && v instanceof Data_Ordering.LT) {
+                            __tco_ctx = new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, m.value4, m.value5, m.value6), ctx);
+                            __copy_m = m.value3;
+                            return;
+                        };
+                        __tco_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);
+                        __copy_m = m.value6;
+                        return;
+                    };
+                    throw new Error("Failed pattern match at Data.Map line 432, column 34 - line 455, column 80: " + [ m.constructor.name ]);
+                };
+                while (!__tco_done) {
+                    __tco_result = __tco_loop(__tco_ctx, __copy_m);
+                };
+                return __tco_result;
+            };
+        };
+        return down(Data_List_Types.Nil.value);
+    };
+};
+var foldableMap = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (m) {
+            return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(values(m));
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (m) {
+            return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(z)(values(m));
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (m) {
+            return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(z)(values(m));
+        };
+    };
+});
+var traversableMap = new Data_Traversable.Traversable(function () {
+    return foldableMap;
+}, function () {
+    return functorMap;
+}, function (dictApplicative) {
+    return Data_Traversable.traverse(traversableMap)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            if (v instanceof Leaf) {
+                return Control_Applicative.pure(dictApplicative)(Leaf.value);
+            };
+            if (v instanceof Two) {
+                return Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Two.create)(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value0)))(Control_Applicative.pure(dictApplicative)(v.value1)))(f(v.value2)))(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value3));
+            };
+            if (v instanceof Three) {
+                return Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Three.create)(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value0)))(Control_Applicative.pure(dictApplicative)(v.value1)))(f(v.value2)))(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value3)))(Control_Applicative.pure(dictApplicative)(v.value4)))(f(v.value5)))(Data_Traversable.traverse(traversableMap)(dictApplicative)(f)(v.value6));
+            };
+            throw new Error("Failed pattern match at Data.Map line 98, column 3 - line 98, column 30: " + [ f.constructor.name, v.constructor.name ]);
+        };
+    };
+});
+var foldSubmap = function (dictOrd) {
+    return function (dictMonoid) {
+        return function (kmin) {
+            return function (kmax) {
+                return function (f) {
+                    var tooSmall = (function () {
+                        if (kmin instanceof Data_Maybe.Just) {
+                            return function (k) {
+                                return Data_Ord.lessThan(dictOrd)(k)(kmin.value0);
+                            };
+                        };
+                        if (kmin instanceof Data_Maybe.Nothing) {
+                            return Data_Function["const"](false);
+                        };
+                        throw new Error("Failed pattern match at Data.Map line 277, column 7 - line 281, column 22: " + [ kmin.constructor.name ]);
+                    })();
+                    var tooLarge = (function () {
+                        if (kmax instanceof Data_Maybe.Just) {
+                            return function (k) {
+                                return Data_Ord.greaterThan(dictOrd)(k)(kmax.value0);
+                            };
+                        };
+                        if (kmax instanceof Data_Maybe.Nothing) {
+                            return Data_Function["const"](false);
+                        };
+                        throw new Error("Failed pattern match at Data.Map line 284, column 7 - line 288, column 22: " + [ kmax.constructor.name ]);
+                    })();
+                    var inBounds = (function () {
+                        if (kmin instanceof Data_Maybe.Just && kmax instanceof Data_Maybe.Just) {
+                            return function (k) {
+                                return Data_Ord.lessThanOrEq(dictOrd)(kmin.value0)(k) && Data_Ord.lessThanOrEq(dictOrd)(k)(kmax.value0);
+                            };
+                        };
+                        if (kmin instanceof Data_Maybe.Just && kmax instanceof Data_Maybe.Nothing) {
+                            return function (k) {
+                                return Data_Ord.lessThanOrEq(dictOrd)(kmin.value0)(k);
+                            };
+                        };
+                        if (kmin instanceof Data_Maybe.Nothing && kmax instanceof Data_Maybe.Just) {
+                            return function (k) {
+                                return Data_Ord.lessThanOrEq(dictOrd)(k)(kmax.value0);
+                            };
+                        };
+                        if (kmin instanceof Data_Maybe.Nothing && kmax instanceof Data_Maybe.Nothing) {
+                            return Data_Function["const"](true);
+                        };
+                        throw new Error("Failed pattern match at Data.Map line 291, column 7 - line 299, column 21: " + [ kmin.constructor.name, kmax.constructor.name ]);
+                    })();
+                    var go = function (v) {
+                        if (v instanceof Leaf) {
+                            return Data_Monoid.mempty(dictMonoid);
+                        };
+                        if (v instanceof Two) {
+                            return Data_Semigroup.append(dictMonoid.Semigroup0())((function () {
+                                var $617 = tooSmall(v.value1);
+                                if ($617) {
+                                    return Data_Monoid.mempty(dictMonoid);
+                                };
+                                return go(v.value0);
+                            })())(Data_Semigroup.append(dictMonoid.Semigroup0())((function () {
+                                var $618 = inBounds(v.value1);
+                                if ($618) {
+                                    return f(v.value1)(v.value2);
+                                };
+                                return Data_Monoid.mempty(dictMonoid);
+                            })())((function () {
+                                var $619 = tooLarge(v.value1);
+                                if ($619) {
+                                    return Data_Monoid.mempty(dictMonoid);
+                                };
+                                return go(v.value3);
+                            })()));
+                        };
+                        if (v instanceof Three) {
+                            return Data_Semigroup.append(dictMonoid.Semigroup0())((function () {
+                                var $624 = tooSmall(v.value1);
+                                if ($624) {
+                                    return Data_Monoid.mempty(dictMonoid);
+                                };
+                                return go(v.value0);
+                            })())(Data_Semigroup.append(dictMonoid.Semigroup0())((function () {
+                                var $625 = inBounds(v.value1);
+                                if ($625) {
+                                    return f(v.value1)(v.value2);
+                                };
+                                return Data_Monoid.mempty(dictMonoid);
+                            })())(Data_Semigroup.append(dictMonoid.Semigroup0())((function () {
+                                var $626 = tooSmall(v.value4) || tooLarge(v.value1);
+                                if ($626) {
+                                    return Data_Monoid.mempty(dictMonoid);
+                                };
+                                return go(v.value3);
+                            })())(Data_Semigroup.append(dictMonoid.Semigroup0())((function () {
+                                var $627 = inBounds(v.value4);
+                                if ($627) {
+                                    return f(v.value4)(v.value5);
+                                };
+                                return Data_Monoid.mempty(dictMonoid);
+                            })())((function () {
+                                var $628 = tooLarge(v.value4);
+                                if ($628) {
+                                    return Data_Monoid.mempty(dictMonoid);
+                                };
+                                return go(v.value6);
+                            })()))));
+                        };
+                        throw new Error("Failed pattern match at Data.Map line 317, column 10 - line 329, column 54: " + [ v.constructor.name ]);
+                    };
+                    return go;
+                };
+            };
+        };
+    };
+};
+var findMin = function (v) {
+    if (v instanceof Leaf) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Two) {
+        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+            key: v.value1, 
+            value: v.value2
+        })(findMin(v.value0)));
+    };
+    if (v instanceof Three) {
+        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+            key: v.value1, 
+            value: v.value2
+        })(findMin(v.value0)));
+    };
+    throw new Error("Failed pattern match at Data.Map line 255, column 1 - line 255, column 23: " + [ v.constructor.name ]);
+};
+var lookupGT = function (dictOrd) {
+    return function (k) {
+        var comp = Data_Ord.compare(dictOrd);
+        var go = function (v) {
+            if (v instanceof Leaf) {
+                return Data_Maybe.Nothing.value;
+            };
+            if (v instanceof Two) {
+                var v2 = comp(k)(v.value1);
+                if (v2 instanceof Data_Ordering.EQ) {
+                    return findMin(v.value3);
+                };
+                if (v2 instanceof Data_Ordering.LT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value1, 
+                        value: v.value2
+                    })(go(v.value0)));
+                };
+                if (v2 instanceof Data_Ordering.GT) {
+                    return go(v.value3);
+                };
+                throw new Error("Failed pattern match at Data.Map line 238, column 33 - line 241, column 21: " + [ v2.constructor.name ]);
+            };
+            if (v instanceof Three) {
+                var v3 = comp(k)(v.value1);
+                if (v3 instanceof Data_Ordering.EQ) {
+                    return findMin(new Two(v.value3, v.value4, v.value5, v.value6));
+                };
+                if (v3 instanceof Data_Ordering.LT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value1, 
+                        value: v.value2
+                    })(go(v.value0)));
+                };
+                if (v3 instanceof Data_Ordering.GT) {
+                    return go(new Two(v.value3, v.value4, v.value5, v.value6));
+                };
+                throw new Error("Failed pattern match at Data.Map line 242, column 45 - line 245, column 37: " + [ v3.constructor.name ]);
+            };
+            throw new Error("Failed pattern match at Data.Map line 232, column 14 - line 245, column 37: " + [ v.constructor.name ]);
+        };
+        return go;
+    };
+};
+var findMax = function (v) {
+    if (v instanceof Leaf) {
+        return Data_Maybe.Nothing.value;
+    };
+    if (v instanceof Two) {
+        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+            key: v.value1, 
+            value: v.value2
+        })(findMax(v.value3)));
+    };
+    if (v instanceof Three) {
+        return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+            key: v.value4, 
+            value: v.value5
+        })(findMax(v.value6)));
+    };
+    throw new Error("Failed pattern match at Data.Map line 249, column 1 - line 249, column 23: " + [ v.constructor.name ]);
+};
+var lookupLT = function (dictOrd) {
+    return function (k) {
+        var comp = Data_Ord.compare(dictOrd);
+        var go = function (v) {
+            if (v instanceof Leaf) {
+                return Data_Maybe.Nothing.value;
+            };
+            if (v instanceof Two) {
+                var v2 = comp(k)(v.value1);
+                if (v2 instanceof Data_Ordering.EQ) {
+                    return findMax(v.value0);
+                };
+                if (v2 instanceof Data_Ordering.GT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value1, 
+                        value: v.value2
+                    })(go(v.value3)));
+                };
+                if (v2 instanceof Data_Ordering.LT) {
+                    return go(v.value0);
+                };
+                throw new Error("Failed pattern match at Data.Map line 204, column 33 - line 207, column 20: " + [ v2.constructor.name ]);
+            };
+            if (v instanceof Three) {
+                var v3 = comp(k)(v.value4);
+                if (v3 instanceof Data_Ordering.EQ) {
+                    return findMax(new Two(v.value0, v.value1, v.value2, v.value3));
+                };
+                if (v3 instanceof Data_Ordering.GT) {
+                    return Data_Maybe.Just.create(Data_Maybe.fromMaybe({
+                        key: v.value4, 
+                        value: v.value5
+                    })(go(v.value6)));
+                };
+                if (v3 instanceof Data_Ordering.LT) {
+                    return go(new Two(v.value0, v.value1, v.value2, v.value3));
+                };
+                throw new Error("Failed pattern match at Data.Map line 208, column 45 - line 211, column 36: " + [ v3.constructor.name ]);
+            };
+            throw new Error("Failed pattern match at Data.Map line 198, column 14 - line 211, column 36: " + [ v.constructor.name ]);
+        };
+        return go;
+    };
+};
+var eqMap = function (dictEq) {
+    return function (dictEq1) {
+        return new Data_Eq.Eq(function (m1) {
+            return function (m2) {
+                return Data_Eq.eq(Data_Eq.eqArray(Data_Tuple.eqTuple(dictEq)(dictEq1)))(toAscArray(m1))(toAscArray(m2));
+            };
+        });
+    };
+};
+var ordMap = function (dictOrd) {
+    return function (dictOrd1) {
+        return new Data_Ord.Ord(function () {
+            return eqMap(dictOrd.Eq0())(dictOrd1.Eq0());
+        }, function (m1) {
+            return function (m2) {
+                return Data_Ord.compare(Data_Ord.ordArray(Data_Tuple.ordTuple(dictOrd)(dictOrd1)))(toAscArray(m1))(toAscArray(m2));
+            };
+        });
+    };
+};
+var eq1Map = function (dictEq) {
+    return new Data_Eq.Eq1(function (dictEq1) {
+        return Data_Eq.eq(eqMap(dictEq)(dictEq1));
+    });
+};
+var ord1Map = function (dictOrd) {
+    return new Data_Ord.Ord1(function () {
+        return eq1Map(dictOrd.Eq0());
+    }, function (dictOrd1) {
+        return Data_Ord.compare(ordMap(dictOrd)(dictOrd1));
+    });
+};
+var empty = Leaf.value;
+var fromFoldable = function (dictOrd) {
+    return function (dictFoldable) {
+        return Data_Foldable.foldl(dictFoldable)(function (m) {
+            return function (v) {
+                return insert(dictOrd)(v.value0)(v.value1)(m);
+            };
+        })(empty);
+    };
+};
+var filterWithKey = function (dictOrd) {
+    return function (predicate) {
+        return function ($715) {
+            return fromFoldable(dictOrd)(Data_List_Lazy_Types.foldableList)(Data_List_Lazy.filter(Data_Tuple.uncurry(predicate))(toUnfoldable(Data_List_Lazy_Types.unfoldableList)($715)));
+        };
+    };
+};
+var filter = function (dictOrd) {
+    return function (predicate) {
+        return filterWithKey(dictOrd)(Data_Function["const"](predicate));
+    };
+};
+var filterKeys = function (dictOrd) {
+    return function (predicate) {
+        return filterWithKey(dictOrd)(function ($716) {
+            return Data_Function["const"](predicate($716));
+        });
+    };
+};
+var $$delete = function (dictOrd) {
+    return function (k) {
+        return function (m) {
+            return Data_Maybe.maybe(m)(Data_Tuple.snd)(pop(dictOrd)(k)(m));
+        };
+    };
+};
+var checkValid = function (tree) {
+    var allHeights = function (v) {
+        if (v instanceof Leaf) {
+            return Control_Applicative.pure(Data_List_Types.applicativeList)(0);
+        };
+        if (v instanceof Two) {
+            return Data_Functor.map(Data_List_Types.functorList)(function (n) {
+                return n + 1 | 0;
+            })(Data_Semigroup.append(Data_List_Types.semigroupList)(allHeights(v.value0))(allHeights(v.value3)));
+        };
+        if (v instanceof Three) {
+            return Data_Functor.map(Data_List_Types.functorList)(function (n) {
+                return n + 1 | 0;
+            })(Data_Semigroup.append(Data_List_Types.semigroupList)(allHeights(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(allHeights(v.value3))(allHeights(v.value6))));
+        };
+        throw new Error("Failed pattern match at Data.Map line 151, column 3 - line 151, column 30: " + [ v.constructor.name ]);
+    };
+    return Data_List.length(Data_List.nub(Data_Eq.eqInt)(allHeights(tree))) === 1;
+};
+var alter = function (dictOrd) {
+    return function (f) {
+        return function (k) {
+            return function (m) {
+                var v = f(lookup(dictOrd)(k)(m));
+                if (v instanceof Data_Maybe.Nothing) {
+                    return $$delete(dictOrd)(k)(m);
+                };
+                if (v instanceof Data_Maybe.Just) {
+                    return insert(dictOrd)(k)(v.value0)(m);
+                };
+                throw new Error("Failed pattern match at Data.Map line 500, column 15 - line 502, column 25: " + [ v.constructor.name ]);
+            };
+        };
+    };
+};
+var fromFoldableWith = function (dictOrd) {
+    return function (dictFoldable) {
+        return function (f) {
+            var combine = function (v) {
+                return function (v1) {
+                    if (v1 instanceof Data_Maybe.Just) {
+                        return Data_Maybe.Just.create(f(v)(v1.value0));
+                    };
+                    if (v1 instanceof Data_Maybe.Nothing) {
+                        return new Data_Maybe.Just(v);
+                    };
+                    throw new Error("Failed pattern match at Data.Map line 517, column 3 - line 517, column 38: " + [ v.constructor.name, v1.constructor.name ]);
+                };
+            };
+            return Data_Foldable.foldl(dictFoldable)(function (m) {
+                return function (v) {
+                    return alter(dictOrd)(combine(v.value1))(v.value0)(m);
+                };
+            })(empty);
+        };
+    };
+};
+var unionWith = function (dictOrd) {
+    return function (f) {
+        return function (m1) {
+            return function (m2) {
+                var go = function (m) {
+                    return function (v) {
+                        return alter(dictOrd)(function ($717) {
+                            return Data_Maybe.Just.create(Data_Maybe.maybe(v.value1)(f(v.value1))($717));
+                        })(v.value0)(m);
+                    };
+                };
+                return Data_Foldable.foldl(Data_List_Types.foldableList)(go)(m2)(toUnfoldable(Data_List_Types.unfoldableList)(m1));
+            };
+        };
+    };
+};
+var union = function (dictOrd) {
+    return unionWith(dictOrd)(Data_Function["const"]);
+};
+var semigroupMap = function (dictOrd) {
+    return new Data_Semigroup.Semigroup(union(dictOrd));
+};
+var monoidMap = function (dictOrd) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupMap(dictOrd);
+    }, empty);
+};
+var submap = function (dictOrd) {
+    return function (kmin) {
+        return function (kmax) {
+            return foldSubmap(dictOrd)(monoidMap(dictOrd))(kmin)(kmax)(singleton);
+        };
+    };
+};
+var unions = function (dictOrd) {
+    return function (dictFoldable) {
+        return Data_Foldable.foldl(dictFoldable)(union(dictOrd))(empty);
+    };
+};
+var update = function (dictOrd) {
+    return function (f) {
+        return function (k) {
+            return function (m) {
+                return alter(dictOrd)(Data_Maybe.maybe(Data_Maybe.Nothing.value)(f))(k)(m);
+            };
+        };
+    };
+};
+module.exports = {
+    alter: alter, 
+    checkValid: checkValid, 
+    "delete": $$delete, 
+    empty: empty, 
+    filter: filter, 
+    filterKeys: filterKeys, 
+    filterWithKey: filterWithKey, 
+    findMax: findMax, 
+    findMin: findMin, 
+    foldSubmap: foldSubmap, 
+    fromFoldable: fromFoldable, 
+    fromFoldableWith: fromFoldableWith, 
+    insert: insert, 
+    isEmpty: isEmpty, 
+    isSubmap: isSubmap, 
+    keys: keys, 
+    lookup: lookup, 
+    lookupGE: lookupGE, 
+    lookupGT: lookupGT, 
+    lookupLE: lookupLE, 
+    lookupLT: lookupLT, 
+    mapWithKey: mapWithKey, 
+    member: member, 
+    pop: pop, 
+    showTree: showTree, 
+    singleton: singleton, 
+    size: size, 
+    submap: submap, 
+    toAscUnfoldable: toAscUnfoldable, 
+    toUnfoldable: toUnfoldable, 
+    union: union, 
+    unionWith: unionWith, 
+    unions: unions, 
+    update: update, 
+    values: values, 
+    eq1Map: eq1Map, 
+    eqMap: eqMap, 
+    ord1Map: ord1Map, 
+    ordMap: ordMap, 
+    showMap: showMap, 
+    semigroupMap: semigroupMap, 
+    monoidMap: monoidMap, 
+    functorMap: functorMap, 
+    foldableMap: foldableMap, 
+    traversableMap: traversableMap
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.List":200,"../Data.List.Lazy":197,"../Data.List.Lazy.Types":196,"../Data.List.Types":199,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Partial.Unsafe":275,"../Prelude":278}],202:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var First = function (x) {
+    return x;
+};
+var showFirst = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "First (" + (Data_Show.show(Data_Maybe.showMaybe(dictShow))(v) + ")");
+    });
+};
+var semigroupFirst = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        if (v instanceof Data_Maybe.Just) {
+            return v;
+        };
+        return v1;
+    };
+});
+var ordFirst = function (dictOrd) {
+    return Data_Maybe.ordMaybe(dictOrd);
+};
+var ord1First = Data_Maybe.ord1Maybe;
+var newtypeFirst = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, First);
+var monoidFirst = new Data_Monoid.Monoid(function () {
+    return semigroupFirst;
+}, Data_Maybe.Nothing.value);
+var monadFirst = Data_Maybe.monadMaybe;
+var invariantFirst = Data_Maybe.invariantMaybe;
+var functorFirst = Data_Maybe.functorMaybe;
+var extendFirst = Data_Maybe.extendMaybe;
+var eqFirst = function (dictEq) {
+    return Data_Maybe.eqMaybe(dictEq);
+};
+var eq1First = Data_Maybe.eq1Maybe;
+var boundedFirst = function (dictBounded) {
+    return Data_Maybe.boundedMaybe(dictBounded);
+};
+var bindFirst = Data_Maybe.bindMaybe;
+var applyFirst = Data_Maybe.applyMaybe;
+var applicativeFirst = Data_Maybe.applicativeMaybe;
+module.exports = {
+    First: First, 
+    newtypeFirst: newtypeFirst, 
+    eqFirst: eqFirst, 
+    eq1First: eq1First, 
+    ordFirst: ordFirst, 
+    ord1First: ord1First, 
+    boundedFirst: boundedFirst, 
+    functorFirst: functorFirst, 
+    invariantFirst: invariantFirst, 
+    applyFirst: applyFirst, 
+    applicativeFirst: applicativeFirst, 
+    bindFirst: bindFirst, 
+    monadFirst: monadFirst, 
+    extendFirst: extendFirst, 
+    showFirst: showFirst, 
+    semigroupFirst: semigroupFirst, 
+    monoidFirst: monoidFirst
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],203:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Last = function (x) {
+    return x;
+};
+var showLast = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Last " + (Data_Show.show(Data_Maybe.showMaybe(dictShow))(v) + ")");
+    });
+};
+var semigroupLast = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        if (v1 instanceof Data_Maybe.Just) {
+            return v1;
+        };
+        if (v1 instanceof Data_Maybe.Nothing) {
+            return v;
+        };
+        throw new Error("Failed pattern match at Data.Maybe.Last line 54, column 3 - line 54, column 39: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var ordLast = function (dictOrd) {
+    return Data_Maybe.ordMaybe(dictOrd);
+};
+var ord1Last = Data_Maybe.ord1Maybe;
+var newtypeLast = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Last);
+var monoidLast = new Data_Monoid.Monoid(function () {
+    return semigroupLast;
+}, Data_Maybe.Nothing.value);
+var monadLast = Data_Maybe.monadMaybe;
+var invariantLast = Data_Maybe.invariantMaybe;
+var functorLast = Data_Maybe.functorMaybe;
+var extendLast = Data_Maybe.extendMaybe;
+var eqLast = function (dictEq) {
+    return Data_Maybe.eqMaybe(dictEq);
+};
+var eq1Last = Data_Maybe.eq1Maybe;
+var boundedLast = function (dictBounded) {
+    return Data_Maybe.boundedMaybe(dictBounded);
+};
+var bindLast = Data_Maybe.bindMaybe;
+var applyLast = Data_Maybe.applyMaybe;
+var applicativeLast = Data_Maybe.applicativeMaybe;
+module.exports = {
+    Last: Last, 
+    newtypeLast: newtypeLast, 
+    eqLast: eqLast, 
+    eq1Last: eq1Last, 
+    ordLast: ordLast, 
+    ord1Last: ord1Last, 
+    boundedLast: boundedLast, 
+    functorLast: functorLast, 
+    invariantLast: invariantLast, 
+    applyLast: applyLast, 
+    applicativeLast: applicativeLast, 
+    bindLast: bindLast, 
+    monadLast: monadLast, 
+    extendLast: extendLast, 
+    showLast: showLast, 
+    semigroupLast: semigroupLast, 
+    monoidLast: monoidLast
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],204:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Nothing = (function () {
+    function Nothing() {
+
+    };
+    Nothing.value = new Nothing();
+    return Nothing;
+})();
+var Just = (function () {
+    function Just(value0) {
+        this.value0 = value0;
+    };
+    Just.create = function (value0) {
+        return new Just(value0);
+    };
+    return Just;
+})();
+var showMaybe = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        if (v instanceof Just) {
+            return "(Just " + (Data_Show.show(dictShow)(v.value0) + ")");
+        };
+        if (v instanceof Nothing) {
+            return "Nothing";
+        };
+        throw new Error("Failed pattern match at Data.Maybe line 208, column 3 - line 209, column 3: " + [ v.constructor.name ]);
+    });
+};
+var semigroupMaybe = function (dictSemigroup) {
+    return new Data_Semigroup.Semigroup(function (v) {
+        return function (v1) {
+            if (v instanceof Nothing) {
+                return v1;
+            };
+            if (v1 instanceof Nothing) {
+                return v;
+            };
+            if (v instanceof Just && v1 instanceof Just) {
+                return new Just(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0));
+            };
+            throw new Error("Failed pattern match at Data.Maybe line 177, column 3 - line 177, column 23: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    });
+};
+var monoidMaybe = function (dictSemigroup) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupMaybe(dictSemigroup);
+    }, Nothing.value);
+};
+var maybe$prime = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v2 instanceof Nothing) {
+                return v(Data_Unit.unit);
+            };
+            if (v2 instanceof Just) {
+                return v1(v2.value0);
+            };
+            throw new Error("Failed pattern match at Data.Maybe line 233, column 1 - line 233, column 28: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+        };
+    };
+};
+var maybe = function (v) {
+    return function (v1) {
+        return function (v2) {
+            if (v2 instanceof Nothing) {
+                return v;
+            };
+            if (v2 instanceof Just) {
+                return v1(v2.value0);
+            };
+            throw new Error("Failed pattern match at Data.Maybe line 220, column 1 - line 220, column 22: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+        };
+    };
+};
+var isNothing = maybe(true)(Data_Function["const"](false));
+var isJust = maybe(false)(Data_Function["const"](true));
+var functorMaybe = new Data_Functor.Functor(function (v) {
+    return function (v1) {
+        if (v1 instanceof Just) {
+            return new Just(v(v1.value0));
+        };
+        return Nothing.value;
+    };
+});
+var invariantMaybe = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorMaybe));
+var fromMaybe$prime = function (a) {
+    return maybe$prime(a)(Control_Category.id(Control_Category.categoryFn));
+};
+var fromMaybe = function (a) {
+    return maybe(a)(Control_Category.id(Control_Category.categoryFn));
+};
+var fromJust = function (dictPartial) {
+    return function (v) {
+        var __unused = function (dictPartial1) {
+            return function ($dollar34) {
+                return $dollar34;
+            };
+        };
+        return __unused(dictPartial)((function () {
+            if (v instanceof Just) {
+                return v.value0;
+            };
+            throw new Error("Failed pattern match at Data.Maybe line 271, column 1 - line 271, column 21: " + [ v.constructor.name ]);
+        })());
+    };
+};
+var extendMaybe = new Control_Extend.Extend(function () {
+    return functorMaybe;
+}, function (v) {
+    return function (v1) {
+        if (v1 instanceof Nothing) {
+            return Nothing.value;
+        };
+        return new Just(v(v1));
+    };
+});
+var eqMaybe = function (dictEq) {
+    return new Data_Eq.Eq(function (x) {
+        return function (y) {
+            if (x instanceof Nothing && y instanceof Nothing) {
+                return true;
+            };
+            if (x instanceof Just && y instanceof Just) {
+                return Data_Eq.eq(dictEq)(x.value0)(y.value0);
+            };
+            return false;
+        };
+    });
+};
+var ordMaybe = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqMaybe(dictOrd.Eq0());
+    }, function (x) {
+        return function (y) {
+            if (x instanceof Nothing && y instanceof Nothing) {
+                return Data_Ordering.EQ.value;
+            };
+            if (x instanceof Nothing) {
+                return Data_Ordering.LT.value;
+            };
+            if (y instanceof Nothing) {
+                return Data_Ordering.GT.value;
+            };
+            if (x instanceof Just && y instanceof Just) {
+                return Data_Ord.compare(dictOrd)(x.value0)(y.value0);
+            };
+            throw new Error("Failed pattern match at Data.Maybe line 196, column 1 - line 196, column 51: " + [ x.constructor.name, y.constructor.name ]);
+        };
+    });
+};
+var eq1Maybe = new Data_Eq.Eq1(function (dictEq) {
+    return Data_Eq.eq(eqMaybe(dictEq));
+});
+var ord1Maybe = new Data_Ord.Ord1(function () {
+    return eq1Maybe;
+}, function (dictOrd) {
+    return Data_Ord.compare(ordMaybe(dictOrd));
+});
+var boundedMaybe = function (dictBounded) {
+    return new Data_Bounded.Bounded(function () {
+        return ordMaybe(dictBounded.Ord0());
+    }, Nothing.value, new Just(Data_Bounded.top(dictBounded)));
+};
+var applyMaybe = new Control_Apply.Apply(function () {
+    return functorMaybe;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Just) {
+            return Data_Functor.map(functorMaybe)(v.value0)(v1);
+        };
+        if (v instanceof Nothing) {
+            return Nothing.value;
+        };
+        throw new Error("Failed pattern match at Data.Maybe line 69, column 3 - line 69, column 31: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var bindMaybe = new Control_Bind.Bind(function () {
+    return applyMaybe;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Just) {
+            return v1(v.value0);
+        };
+        if (v instanceof Nothing) {
+            return Nothing.value;
+        };
+        throw new Error("Failed pattern match at Data.Maybe line 128, column 3 - line 128, column 24: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var applicativeMaybe = new Control_Applicative.Applicative(function () {
+    return applyMaybe;
+}, Just.create);
+var monadMaybe = new Control_Monad.Monad(function () {
+    return applicativeMaybe;
+}, function () {
+    return bindMaybe;
+});
+var altMaybe = new Control_Alt.Alt(function () {
+    return functorMaybe;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Nothing) {
+            return v1;
+        };
+        return v;
+    };
+});
+var plusMaybe = new Control_Plus.Plus(function () {
+    return altMaybe;
+}, Nothing.value);
+var alternativeMaybe = new Control_Alternative.Alternative(function () {
+    return applicativeMaybe;
+}, function () {
+    return plusMaybe;
+});
+var monadZeroMaybe = new Control_MonadZero.MonadZero(function () {
+    return alternativeMaybe;
+}, function () {
+    return monadMaybe;
+});
+module.exports = {
+    Nothing: Nothing, 
+    Just: Just, 
+    fromJust: fromJust, 
+    fromMaybe: fromMaybe, 
+    "fromMaybe'": fromMaybe$prime, 
+    isJust: isJust, 
+    isNothing: isNothing, 
+    maybe: maybe, 
+    "maybe'": maybe$prime, 
+    functorMaybe: functorMaybe, 
+    applyMaybe: applyMaybe, 
+    applicativeMaybe: applicativeMaybe, 
+    altMaybe: altMaybe, 
+    plusMaybe: plusMaybe, 
+    alternativeMaybe: alternativeMaybe, 
+    bindMaybe: bindMaybe, 
+    monadMaybe: monadMaybe, 
+    monadZeroMaybe: monadZeroMaybe, 
+    extendMaybe: extendMaybe, 
+    invariantMaybe: invariantMaybe, 
+    semigroupMaybe: semigroupMaybe, 
+    monoidMaybe: monoidMaybe, 
+    eqMaybe: eqMaybe, 
+    eq1Maybe: eq1Maybe, 
+    ordMaybe: ordMaybe, 
+    ord1Maybe: ord1Maybe, 
+    boundedMaybe: boundedMaybe, 
+    showMaybe: showMaybe
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Extend":50,"../Control.Monad":87,"../Control.MonadZero":89,"../Control.Plus":92,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Monoid":213,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Unit":259,"../Prelude":278}],205:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_MediaType = require("../Data.MediaType");
+var textXML = "text/xml";
+var textPlain = "text/plain";
+var textHTML = "text/html";
+var textCSV = "text/csv";
+var multipartFormData = "multipart/form-data";
+var imagePNG = "image/png";
+var imageJPEG = "image/jpeg";
+var imageGIF = "image/gif";
+var applicationXML = "application/xml";
+var applicationOctetStream = "application/octet-stream";
+var applicationJavascript = "application/javascript";
+var applicationJSON = "application/json";
+var applicationFormURLEncoded = "application/x-www-form-urlencoded";
+module.exports = {
+    applicationFormURLEncoded: applicationFormURLEncoded, 
+    applicationJSON: applicationJSON, 
+    applicationJavascript: applicationJavascript, 
+    applicationOctetStream: applicationOctetStream, 
+    applicationXML: applicationXML, 
+    imageGIF: imageGIF, 
+    imageJPEG: imageJPEG, 
+    imagePNG: imagePNG, 
+    multipartFormData: multipartFormData, 
+    textCSV: textCSV, 
+    textHTML: textHTML, 
+    textPlain: textPlain, 
+    textXML: textXML
+};
+
+},{"../Data.MediaType":206}],206:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Data_Eq = require("../Data.Eq");
+var Data_Generic = require("../Data.Generic");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var MediaType = function (x) {
+    return x;
+};
+var showMediaType = new Data_Show.Show(function (v) {
+    return "(MediaType " + (Data_Show.show(Data_Show.showString)(v) + ")");
+});
+var newtypeMediaType = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, MediaType);
+var genericMediaType = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.MediaType.MediaType" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(MediaType))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.MediaType.MediaType", [ {
+        sigConstructor: "Data.MediaType.MediaType", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.MediaType.MediaType", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericString)(v);
+    } ]);
+});
+var eqMediaType = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        return x === y;
+    };
+});
+var ordMediaType = new Data_Ord.Ord(function () {
+    return eqMediaType;
+}, function (x) {
+    return function (y) {
+        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
+    };
+});
+module.exports = {
+    MediaType: MediaType, 
+    newtypeMediaType: newtypeMediaType, 
+    eqMediaType: eqMediaType, 
+    ordMediaType: ordMediaType, 
+    genericMediaType: genericMediaType, 
+    showMediaType: showMediaType
+};
+
+},{"../Control.Apply":42,"../Data.Eq":140,"../Data.Generic":159,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Unit":259,"../Prelude":278}],207:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Additive = function (x) {
+    return x;
+};
+var showAdditive = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Additive " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semigroupAdditive = function (dictSemiring) {
+    return new Data_Semigroup.Semigroup(function (v) {
+        return function (v1) {
+            return Data_Semiring.add(dictSemiring)(v)(v1);
+        };
+    });
+};
+var ordAdditive = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeAdditive = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Additive);
+var monoidAdditive = function (dictSemiring) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupAdditive(dictSemiring);
+    }, Data_Semiring.zero(dictSemiring));
+};
+var invariantAdditive = new Data_Functor_Invariant.Invariant(function (f) {
+    return function (v) {
+        return function (v1) {
+            return f(v1);
+        };
+    };
+});
+var functorAdditive = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return f(v);
+    };
+});
+var extendAdditive = new Control_Extend.Extend(function () {
+    return functorAdditive;
+}, function (f) {
+    return function (x) {
+        return f(x);
+    };
+});
+var eqAdditive = function (dictEq) {
+    return dictEq;
+};
+var comonadAdditive = new Control_Comonad.Comonad(function () {
+    return extendAdditive;
+}, Data_Newtype.unwrap(newtypeAdditive));
+var boundedAdditive = function (dictBounded) {
+    return dictBounded;
+};
+var applyAdditive = new Control_Apply.Apply(function () {
+    return functorAdditive;
+}, function (v) {
+    return function (v1) {
+        return v(v1);
+    };
+});
+var bindAdditive = new Control_Bind.Bind(function () {
+    return applyAdditive;
+}, function (v) {
+    return function (f) {
+        return f(v);
+    };
+});
+var applicativeAdditive = new Control_Applicative.Applicative(function () {
+    return applyAdditive;
+}, Additive);
+var monadAdditive = new Control_Monad.Monad(function () {
+    return applicativeAdditive;
+}, function () {
+    return bindAdditive;
+});
+module.exports = {
+    Additive: Additive, 
+    newtypeAdditive: newtypeAdditive, 
+    eqAdditive: eqAdditive, 
+    ordAdditive: ordAdditive, 
+    boundedAdditive: boundedAdditive, 
+    functorAdditive: functorAdditive, 
+    invariantAdditive: invariantAdditive, 
+    applyAdditive: applyAdditive, 
+    applicativeAdditive: applicativeAdditive, 
+    bindAdditive: bindAdditive, 
+    monadAdditive: monadAdditive, 
+    extendAdditive: extendAdditive, 
+    comonadAdditive: comonadAdditive, 
+    showAdditive: showAdditive, 
+    semigroupAdditive: semigroupAdditive, 
+    monoidAdditive: monoidAdditive
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Prelude":278}],208:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Conj = function (x) {
+    return x;
+};
+var showConj = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Conj " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semiringConj = function (dictHeytingAlgebra) {
+    return new Data_Semiring.Semiring(function (v) {
+        return function (v1) {
+            return Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v)(v1);
+        };
+    }, function (v) {
+        return function (v1) {
+            return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
+        };
+    }, Data_HeytingAlgebra.ff(dictHeytingAlgebra), Data_HeytingAlgebra.tt(dictHeytingAlgebra));
+};
+var semigroupConj = function (dictHeytingAlgebra) {
+    return new Data_Semigroup.Semigroup(function (v) {
+        return function (v1) {
+            return Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v)(v1);
+        };
+    });
+};
+var ordConj = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeConj = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Conj);
+var monoidConj = function (dictHeytingAlgebra) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupConj(dictHeytingAlgebra);
+    }, Data_HeytingAlgebra.tt(dictHeytingAlgebra));
+};
+var invariantConj = new Data_Functor_Invariant.Invariant(function (f) {
+    return function (v) {
+        return function (v1) {
+            return f(v1);
+        };
+    };
+});
+var functorConj = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return f(v);
+    };
+});
+var extendConj = new Control_Extend.Extend(function () {
+    return functorConj;
+}, function (f) {
+    return function (x) {
+        return f(x);
+    };
+});
+var eqConj = function (dictEq) {
+    return dictEq;
+};
+var comonadConj = new Control_Comonad.Comonad(function () {
+    return extendConj;
+}, Data_Newtype.unwrap(newtypeConj));
+var boundedConj = function (dictBounded) {
+    return dictBounded;
+};
+var applyConj = new Control_Apply.Apply(function () {
+    return functorConj;
+}, function (v) {
+    return function (v1) {
+        return v(v1);
+    };
+});
+var bindConj = new Control_Bind.Bind(function () {
+    return applyConj;
+}, function (v) {
+    return function (f) {
+        return f(v);
+    };
+});
+var applicativeConj = new Control_Applicative.Applicative(function () {
+    return applyConj;
+}, Conj);
+var monadConj = new Control_Monad.Monad(function () {
+    return applicativeConj;
+}, function () {
+    return bindConj;
+});
+module.exports = {
+    Conj: Conj, 
+    newtypeConj: newtypeConj, 
+    eqConj: eqConj, 
+    ordConj: ordConj, 
+    boundedConj: boundedConj, 
+    functorConj: functorConj, 
+    invariantConj: invariantConj, 
+    applyConj: applyConj, 
+    applicativeConj: applicativeConj, 
+    bindConj: bindConj, 
+    monadConj: monadConj, 
+    extendConj: extendConj, 
+    comonadConj: comonadConj, 
+    showConj: showConj, 
+    semigroupConj: semigroupConj, 
+    monoidConj: monoidConj, 
+    semiringConj: semiringConj
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.HeytingAlgebra":162,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Prelude":278}],209:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Disj = function (x) {
+    return x;
+};
+var showDisj = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Disj " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semiringDisj = function (dictHeytingAlgebra) {
+    return new Data_Semiring.Semiring(function (v) {
+        return function (v1) {
+            return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
+        };
+    }, function (v) {
+        return function (v1) {
+            return Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v)(v1);
+        };
+    }, Data_HeytingAlgebra.tt(dictHeytingAlgebra), Data_HeytingAlgebra.ff(dictHeytingAlgebra));
+};
+var semigroupDisj = function (dictHeytingAlgebra) {
+    return new Data_Semigroup.Semigroup(function (v) {
+        return function (v1) {
+            return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
+        };
+    });
+};
+var ordDisj = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeDisj = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Disj);
+var monoidDisj = function (dictHeytingAlgebra) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupDisj(dictHeytingAlgebra);
+    }, Data_HeytingAlgebra.ff(dictHeytingAlgebra));
+};
+var invariantDisj = new Data_Functor_Invariant.Invariant(function (f) {
+    return function (v) {
+        return function (v1) {
+            return f(v1);
+        };
+    };
+});
+var functorDisj = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return f(v);
+    };
+});
+var extendDisj = new Control_Extend.Extend(function () {
+    return functorDisj;
+}, function (f) {
+    return function (x) {
+        return f(x);
+    };
+});
+var eqDisj = function (dictEq) {
+    return dictEq;
+};
+var comonadDisj = new Control_Comonad.Comonad(function () {
+    return extendDisj;
+}, Data_Newtype.unwrap(newtypeDisj));
+var boundedDisj = function (dictBounded) {
+    return dictBounded;
+};
+var applyDisj = new Control_Apply.Apply(function () {
+    return functorDisj;
+}, function (v) {
+    return function (v1) {
+        return v(v1);
+    };
+});
+var bindDisj = new Control_Bind.Bind(function () {
+    return applyDisj;
+}, function (v) {
+    return function (f) {
+        return f(v);
+    };
+});
+var applicativeDisj = new Control_Applicative.Applicative(function () {
+    return applyDisj;
+}, Disj);
+var monadDisj = new Control_Monad.Monad(function () {
+    return applicativeDisj;
+}, function () {
+    return bindDisj;
+});
+module.exports = {
+    Disj: Disj, 
+    newtypeDisj: newtypeDisj, 
+    eqDisj: eqDisj, 
+    ordDisj: ordDisj, 
+    boundedDisj: boundedDisj, 
+    functorDisj: functorDisj, 
+    invariantDisj: invariantDisj, 
+    applyDisj: applyDisj, 
+    applicativeDisj: applicativeDisj, 
+    bindDisj: bindDisj, 
+    monadDisj: monadDisj, 
+    extendDisj: extendDisj, 
+    comonadDisj: comonadDisj, 
+    showDisj: showDisj, 
+    semigroupDisj: semigroupDisj, 
+    monoidDisj: monoidDisj, 
+    semiringDisj: semiringDisj
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.HeytingAlgebra":162,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Prelude":278}],210:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Dual = function (x) {
+    return x;
+};
+var showDual = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Dual " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semigroupDual = function (dictSemigroup) {
+    return new Data_Semigroup.Semigroup(function (v) {
+        return function (v1) {
+            return Data_Semigroup.append(dictSemigroup)(v1)(v);
+        };
+    });
+};
+var ordDual = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeDual = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Dual);
+var monoidDual = function (dictMonoid) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupDual(dictMonoid.Semigroup0());
+    }, Data_Monoid.mempty(dictMonoid));
+};
+var invariantDual = new Data_Functor_Invariant.Invariant(function (f) {
+    return function (v) {
+        return function (v1) {
+            return f(v1);
+        };
+    };
+});
+var functorDual = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return f(v);
+    };
+});
+var extendDual = new Control_Extend.Extend(function () {
+    return functorDual;
+}, function (f) {
+    return function (x) {
+        return f(x);
+    };
+});
+var eqDual = function (dictEq) {
+    return dictEq;
+};
+var comonadDual = new Control_Comonad.Comonad(function () {
+    return extendDual;
+}, Data_Newtype.unwrap(newtypeDual));
+var boundedDual = function (dictBounded) {
+    return dictBounded;
+};
+var applyDual = new Control_Apply.Apply(function () {
+    return functorDual;
+}, function (v) {
+    return function (v1) {
+        return v(v1);
+    };
+});
+var bindDual = new Control_Bind.Bind(function () {
+    return applyDual;
+}, function (v) {
+    return function (f) {
+        return f(v);
+    };
+});
+var applicativeDual = new Control_Applicative.Applicative(function () {
+    return applyDual;
+}, Dual);
+var monadDual = new Control_Monad.Monad(function () {
+    return applicativeDual;
+}, function () {
+    return bindDual;
+});
+module.exports = {
+    Dual: Dual, 
+    newtypeDual: newtypeDual, 
+    eqDual: eqDual, 
+    ordDual: ordDual, 
+    boundedDual: boundedDual, 
+    functorDual: functorDual, 
+    invariantDual: invariantDual, 
+    applyDual: applyDual, 
+    applicativeDual: applicativeDual, 
+    bindDual: bindDual, 
+    monadDual: monadDual, 
+    extendDual: extendDual, 
+    comonadDual: comonadDual, 
+    showDual: showDual, 
+    semigroupDual: semigroupDual, 
+    monoidDual: monoidDual
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],211:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Semigroup = require("../Data.Semigroup");
+var Prelude = require("../Prelude");
+var Endo = function (x) {
+    return x;
+};
+var semigroupEndo = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        return function ($11) {
+            return v(v1($11));
+        };
+    };
+});
+var newtypeEndo = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Endo);
+var monoidEndo = new Data_Monoid.Monoid(function () {
+    return semigroupEndo;
+}, Control_Category.id(Control_Category.categoryFn));
+var invariantEndo = new Data_Functor_Invariant.Invariant(function (ab) {
+    return function (ba) {
+        return function (v) {
+            return function ($12) {
+                return ab(v(ba($12)));
+            };
+        };
+    };
+});
+module.exports = {
+    Endo: Endo, 
+    newtypeEndo: newtypeEndo, 
+    invariantEndo: invariantEndo, 
+    semigroupEndo: semigroupEndo, 
+    monoidEndo: monoidEndo
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Functor.Invariant":155,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Semigroup":237,"../Prelude":278}],212:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Data_Bounded = require("../Data.Bounded");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Multiplicative = function (x) {
+    return x;
+};
+var showMultiplicative = function (dictShow) {
+    return new Data_Show.Show(function (v) {
+        return "(Multiplicative " + (Data_Show.show(dictShow)(v) + ")");
+    });
+};
+var semigroupMultiplicative = function (dictSemiring) {
+    return new Data_Semigroup.Semigroup(function (v) {
+        return function (v1) {
+            return Data_Semiring.mul(dictSemiring)(v)(v1);
+        };
+    });
+};
+var ordMultiplicative = function (dictOrd) {
+    return dictOrd;
+};
+var newtypeMultiplicative = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Multiplicative);
+var monoidMultiplicative = function (dictSemiring) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupMultiplicative(dictSemiring);
+    }, Data_Semiring.one(dictSemiring));
+};
+var invariantMultiplicative = new Data_Functor_Invariant.Invariant(function (f) {
+    return function (v) {
+        return function (v1) {
+            return f(v1);
+        };
+    };
+});
+var functorMultiplicative = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return f(v);
+    };
+});
+var extendMultiplicative = new Control_Extend.Extend(function () {
+    return functorMultiplicative;
+}, function (f) {
+    return function (x) {
+        return f(x);
+    };
+});
+var eqMultiplicative = function (dictEq) {
+    return dictEq;
+};
+var comonadMultiplicative = new Control_Comonad.Comonad(function () {
+    return extendMultiplicative;
+}, Data_Newtype.unwrap(newtypeMultiplicative));
+var boundedMultiplicative = function (dictBounded) {
+    return dictBounded;
+};
+var applyMultiplicative = new Control_Apply.Apply(function () {
+    return functorMultiplicative;
+}, function (v) {
+    return function (v1) {
+        return v(v1);
+    };
+});
+var bindMultiplicative = new Control_Bind.Bind(function () {
+    return applyMultiplicative;
+}, function (v) {
+    return function (f) {
+        return f(v);
+    };
+});
+var applicativeMultiplicative = new Control_Applicative.Applicative(function () {
+    return applyMultiplicative;
+}, Multiplicative);
+var monadMultiplicative = new Control_Monad.Monad(function () {
+    return applicativeMultiplicative;
+}, function () {
+    return bindMultiplicative;
+});
+module.exports = {
+    Multiplicative: Multiplicative, 
+    newtypeMultiplicative: newtypeMultiplicative, 
+    eqMultiplicative: eqMultiplicative, 
+    ordMultiplicative: ordMultiplicative, 
+    boundedMultiplicative: boundedMultiplicative, 
+    functorMultiplicative: functorMultiplicative, 
+    invariantMultiplicative: invariantMultiplicative, 
+    applyMultiplicative: applyMultiplicative, 
+    applicativeMultiplicative: applicativeMultiplicative, 
+    bindMultiplicative: bindMultiplicative, 
+    monadMultiplicative: monadMultiplicative, 
+    extendMultiplicative: extendMultiplicative, 
+    comonadMultiplicative: comonadMultiplicative, 
+    showMultiplicative: showMultiplicative, 
+    semigroupMultiplicative: semigroupMultiplicative, 
+    monoidMultiplicative: monoidMultiplicative
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Monad":87,"../Data.Bounded":133,"../Data.Eq":140,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Prelude":278}],213:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Boolean = require("../Data.Boolean");
+var Data_Eq = require("../Data.Eq");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Function = require("../Data.Function");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Monoid = function (Semigroup0, mempty) {
+    this.Semigroup0 = Semigroup0;
+    this.mempty = mempty;
+};
+var monoidUnit = new Monoid(function () {
+    return Data_Semigroup.semigroupUnit;
+}, Data_Unit.unit);
+var monoidString = new Monoid(function () {
+    return Data_Semigroup.semigroupString;
+}, "");
+var monoidOrdering = new Monoid(function () {
+    return Data_Ordering.semigroupOrdering;
+}, Data_Ordering.EQ.value);
+var monoidArray = new Monoid(function () {
+    return Data_Semigroup.semigroupArray;
+}, [  ]);
+var mempty = function (dict) {
+    return dict.mempty;
+};
+var monoidFn = function (dictMonoid) {
+    return new Monoid(function () {
+        return Data_Semigroup.semigroupFn(dictMonoid.Semigroup0());
+    }, Data_Function["const"](mempty(dictMonoid)));
+};
+var power = function (dictMonoid) {
+    return function (x) {
+        var go = function (p) {
+            if (p <= 0) {
+                return mempty(dictMonoid);
+            };
+            if (p === 1) {
+                return x;
+            };
+            if (p % 2 === 0) {
+                var x$prime = go(p / 2 | 0);
+                return Data_Semigroup.append(dictMonoid.Semigroup0())(x$prime)(x$prime);
+            };
+            if (Data_Boolean.otherwise) {
+                var x$prime = go(p / 2 | 0);
+                return Data_Semigroup.append(dictMonoid.Semigroup0())(x$prime)(Data_Semigroup.append(dictMonoid.Semigroup0())(x$prime)(x));
+            };
+            throw new Error("Failed pattern match at Data.Monoid line 52, column 3 - line 56, column 57: " + [ p.constructor.name ]);
+        };
+        return go;
+    };
+};
+module.exports = {
+    Monoid: Monoid, 
+    mempty: mempty, 
+    power: power, 
+    monoidUnit: monoidUnit, 
+    monoidOrdering: monoidOrdering, 
+    monoidFn: monoidFn, 
+    monoidString: monoidString, 
+    monoidArray: monoidArray
+};
+
+},{"../Data.Boolean":130,"../Data.Eq":140,"../Data.EuclideanRing":142,"../Data.Function":151,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Unit":259,"../Prelude":278}],214:[function(require,module,exports){
+arguments[4][100][0].apply(exports,arguments)
+},{"dup":100}],215:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Prelude = require("../Prelude");
+var Newtype = function (unwrap, wrap) {
+    this.unwrap = unwrap;
+    this.wrap = wrap;
+};
+var wrap = function (dict) {
+    return dict.wrap;
+};
+var unwrap = function (dict) {
+    return dict.unwrap;
+};
+var underF2 = function (dictFunctor) {
+    return function (dictFunctor1) {
+        return function (dictNewtype) {
+            return function (dictNewtype1) {
+                return function (v) {
+                    return function (f) {
+                        return function ($50) {
+                            return function ($51) {
+                                return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(Data_Function.on(f)(Data_Functor.map(dictFunctor)(wrap(dictNewtype)))($50)($51));
+                            };
+                        };
+                    };
+                };
+            };
+        };
+    };
+};
+var underF = function (dictFunctor) {
+    return function (dictFunctor1) {
+        return function (dictNewtype) {
+            return function (dictNewtype1) {
+                return function (v) {
+                    return function (f) {
+                        return function ($52) {
+                            return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(wrap(dictNewtype))($52)));
+                        };
+                    };
+                };
+            };
+        };
+    };
+};
+var under2 = function (dictNewtype) {
+    return function (dictNewtype1) {
+        return function (v) {
+            return function (f) {
+                return function ($53) {
+                    return function ($54) {
+                        return unwrap(dictNewtype1)(Data_Function.on(f)(wrap(dictNewtype))($53)($54));
+                    };
+                };
+            };
+        };
+    };
+};
+var under = function (dictNewtype) {
+    return function (dictNewtype1) {
+        return function (v) {
+            return function (f) {
+                return function ($55) {
+                    return unwrap(dictNewtype1)(f(wrap(dictNewtype)($55)));
+                };
+            };
+        };
+    };
+};
+var un = function (dictNewtype) {
+    return function (v) {
+        return unwrap(dictNewtype);
+    };
+};
+var traverse = function (dictFunctor) {
+    return function (dictNewtype) {
+        return function (v) {
+            return function (f) {
+                return function ($56) {
+                    return Data_Functor.map(dictFunctor)(wrap(dictNewtype))(f(unwrap(dictNewtype)($56)));
+                };
+            };
+        };
+    };
+};
+var overF2 = function (dictFunctor) {
+    return function (dictFunctor1) {
+        return function (dictNewtype) {
+            return function (dictNewtype1) {
+                return function (v) {
+                    return function (f) {
+                        return function ($57) {
+                            return function ($58) {
+                                return Data_Functor.map(dictFunctor1)(wrap(dictNewtype1))(Data_Function.on(f)(Data_Functor.map(dictFunctor)(unwrap(dictNewtype)))($57)($58));
+                            };
+                        };
+                    };
+                };
+            };
+        };
+    };
+};
+var overF = function (dictFunctor) {
+    return function (dictFunctor1) {
+        return function (dictNewtype) {
+            return function (dictNewtype1) {
+                return function (v) {
+                    return function (f) {
+                        return function ($59) {
+                            return Data_Functor.map(dictFunctor1)(wrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(unwrap(dictNewtype))($59)));
+                        };
+                    };
+                };
+            };
+        };
+    };
+};
+var over2 = function (dictNewtype) {
+    return function (dictNewtype1) {
+        return function (v) {
+            return function (f) {
+                return function ($60) {
+                    return function ($61) {
+                        return wrap(dictNewtype1)(Data_Function.on(f)(unwrap(dictNewtype))($60)($61));
+                    };
+                };
+            };
+        };
+    };
+};
+var over = function (dictNewtype) {
+    return function (dictNewtype1) {
+        return function (v) {
+            return function (f) {
+                return function ($62) {
+                    return wrap(dictNewtype1)(f(unwrap(dictNewtype)($62)));
+                };
+            };
+        };
+    };
+};
+var op = function (dictNewtype) {
+    return un(dictNewtype);
+};
+var collect = function (dictFunctor) {
+    return function (dictNewtype) {
+        return function (v) {
+            return function (f) {
+                return function ($63) {
+                    return wrap(dictNewtype)(f(Data_Functor.map(dictFunctor)(unwrap(dictNewtype))($63)));
+                };
+            };
+        };
+    };
+};
+var alaF = function (dictFunctor) {
+    return function (dictFunctor1) {
+        return function (dictNewtype) {
+            return function (dictNewtype1) {
+                return function (v) {
+                    return function (f) {
+                        return function ($64) {
+                            return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(wrap(dictNewtype))($64)));
+                        };
+                    };
+                };
+            };
+        };
+    };
+};
+var ala = function (dictFunctor) {
+    return function (dictNewtype) {
+        return function (dictNewtype1) {
+            return function (v) {
+                return function (f) {
+                    return Data_Functor.map(dictFunctor)(unwrap(dictNewtype))(f(wrap(dictNewtype1)));
+                };
+            };
+        };
+    };
+};
+module.exports = {
+    Newtype: Newtype, 
+    ala: ala, 
+    alaF: alaF, 
+    collect: collect, 
+    op: op, 
+    over: over, 
+    over2: over2, 
+    overF: overF, 
+    overF2: overF2, 
+    traverse: traverse, 
+    un: un, 
+    under: under, 
+    under2: under2, 
+    underF: underF, 
+    underF2: underF2, 
+    unwrap: unwrap, 
+    wrap: wrap
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Function":151,"../Data.Functor":157,"../Prelude":278}],216:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Plus = require("../Control.Plus");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var NonEmpty = (function () {
+    function NonEmpty(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    NonEmpty.create = function (value0) {
+        return function (value1) {
+            return new NonEmpty(value0, value1);
+        };
+    };
+    return NonEmpty;
+})();
+var tail = function (v) {
+    return v.value1;
+};
+var singleton = function (dictPlus) {
+    return function (a) {
+        return new NonEmpty(a, Control_Plus.empty(dictPlus));
+    };
+};
+var showNonEmpty = function (dictShow) {
+    return function (dictShow1) {
+        return new Data_Show.Show(function (v) {
+            return "(NonEmpty " + (Data_Show.show(dictShow)(v.value0) + (" " + (Data_Show.show(dictShow1)(v.value1) + ")")));
+        });
+    };
+};
+var oneOf = function (dictAlternative) {
+    return function (v) {
+        return Control_Alt.alt((dictAlternative.Plus1()).Alt0())(Control_Applicative.pure(dictAlternative.Applicative0())(v.value0))(v.value1);
+    };
+};
+var head = function (v) {
+    return v.value0;
+};
+var functorNonEmpty = function (dictFunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return function (v) {
+            return new NonEmpty(f(v.value0), Data_Functor.map(dictFunctor)(f)(v.value1));
+        };
+    });
+};
+var fromNonEmpty = function (f) {
+    return function (v) {
+        return f(v.value0)(v.value1);
+    };
+};
+var foldl1 = function (dictFoldable) {
+    return function (f) {
+        return function (v) {
+            return Data_Foldable.foldl(dictFoldable)(f)(v.value0)(v.value1);
+        };
+    };
+};
+var foldableNonEmpty = function (dictFoldable) {
+    return new Data_Foldable.Foldable(function (dictMonoid) {
+        return function (f) {
+            return function (v) {
+                return Data_Semigroup.append(dictMonoid.Semigroup0())(f(v.value0))(Data_Foldable.foldMap(dictFoldable)(dictMonoid)(f)(v.value1));
+            };
+        };
+    }, function (f) {
+        return function (b) {
+            return function (v) {
+                return Data_Foldable.foldl(dictFoldable)(f)(f(b)(v.value0))(v.value1);
+            };
+        };
+    }, function (f) {
+        return function (b) {
+            return function (v) {
+                return f(v.value0)(Data_Foldable.foldr(dictFoldable)(f)(b)(v.value1));
+            };
+        };
+    });
+};
+var traversableNonEmpty = function (dictTraversable) {
+    return new Data_Traversable.Traversable(function () {
+        return foldableNonEmpty(dictTraversable.Foldable1());
+    }, function () {
+        return functorNonEmpty(dictTraversable.Functor0());
+    }, function (dictApplicative) {
+        return function (v) {
+            return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(NonEmpty.create)(v.value0))(Data_Traversable.sequence(dictTraversable)(dictApplicative)(v.value1));
+        };
+    }, function (dictApplicative) {
+        return function (f) {
+            return function (v) {
+                return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(NonEmpty.create)(f(v.value0)))(Data_Traversable.traverse(dictTraversable)(dictApplicative)(f)(v.value1));
+            };
+        };
+    });
+};
+var foldMap1 = function (dictSemigroup) {
+    return function (dictFoldable) {
+        return function (f) {
+            return function (v) {
+                return Data_Foldable.foldl(dictFoldable)(function (s) {
+                    return function (a1) {
+                        return Data_Semigroup.append(dictSemigroup)(s)(f(a1));
+                    };
+                })(f(v.value0))(v.value1);
+            };
+        };
+    };
+};
+var fold1 = function (dictSemigroup) {
+    return function (dictFoldable) {
+        return foldMap1(dictSemigroup)(dictFoldable)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var eq1NonEmpty = function (dictEq1) {
+    return new Data_Eq.Eq1(function (dictEq) {
+        return function (v) {
+            return function (v1) {
+                return Data_Eq.eq(dictEq)(v.value0)(v1.value0) && Data_Eq.eq1(dictEq1)(dictEq)(v.value1)(v1.value1);
+            };
+        };
+    });
+};
+var eqNonEmpty = function (dictEq1) {
+    return function (dictEq) {
+        return new Data_Eq.Eq(Data_Eq.eq1(eq1NonEmpty(dictEq1))(dictEq));
+    };
+};
+var ord1NonEmpty = function (dictOrd1) {
+    return new Data_Ord.Ord1(function () {
+        return eq1NonEmpty(dictOrd1.Eq10());
+    }, function (dictOrd) {
+        return function (v) {
+            return function (v1) {
+                var v2 = Data_Ord.compare(dictOrd)(v.value0)(v1.value0);
+                if (v2 instanceof Data_Ordering.EQ) {
+                    return Data_Ord.compare1(dictOrd1)(dictOrd)(v.value1)(v1.value1);
+                };
+                return v2;
+            };
+        };
+    });
+};
+var ordNonEmpty = function (dictOrd1) {
+    return function (dictOrd) {
+        return new Data_Ord.Ord(function () {
+            return eqNonEmpty(dictOrd1.Eq10())(dictOrd.Eq0());
+        }, Data_Ord.compare1(ord1NonEmpty(dictOrd1))(dictOrd));
+    };
+};
+module.exports = {
+    NonEmpty: NonEmpty, 
+    fold1: fold1, 
+    foldMap1: foldMap1, 
+    foldl1: foldl1, 
+    fromNonEmpty: fromNonEmpty, 
+    head: head, 
+    oneOf: oneOf, 
+    singleton: singleton, 
+    tail: tail, 
+    showNonEmpty: showNonEmpty, 
+    eqNonEmpty: eqNonEmpty, 
+    eq1NonEmpty: eq1NonEmpty, 
+    ordNonEmpty: ordNonEmpty, 
+    ord1NonEmpty: ord1NonEmpty, 
+    functorNonEmpty: functorNonEmpty, 
+    foldableNonEmpty: foldableNonEmpty, 
+    traversableNonEmpty: traversableNonEmpty
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Control.Plus":92,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Traversable":254,"../Prelude":278}],217:[function(require,module,exports){
+"use strict";
+
+exports["null"] = null;
+
+exports.nullable = function (a, r, f) {
+  return a == null ? r : f(a);
+};
+
+exports.notNull = function (x) {
+  return x;
+};
+
+},{}],218:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Ord = require("../Data.Ord");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var toNullable = Data_Maybe.maybe($foreign["null"])($foreign.notNull);
+var toMaybe = function (n) {
+    return $foreign.nullable(n, Data_Maybe.Nothing.value, Data_Maybe.Just.create);
+};
+var showNullable = function (dictShow) {
+    return new Data_Show.Show(function ($5) {
+        return Data_Maybe.maybe("null")(Data_Show.show(dictShow))(toMaybe($5));
+    });
+};
+var eqNullable = function (dictEq) {
+    return new Data_Eq.Eq(Data_Function.on(Data_Eq.eq(Data_Maybe.eqMaybe(dictEq)))(toMaybe));
+};
+var ordNullable = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqNullable(dictOrd.Eq0());
+    }, Data_Function.on(Data_Ord.compare(Data_Maybe.ordMaybe(dictOrd)))(toMaybe));
+};
+var eq1Nullable = new Data_Eq.Eq1(function (dictEq) {
+    return Data_Eq.eq(eqNullable(dictEq));
+});
+var ord1Nullable = new Data_Ord.Ord1(function () {
+    return eq1Nullable;
+}, function (dictOrd) {
+    return Data_Ord.compare(ordNullable(dictOrd));
+});
+module.exports = {
+    toMaybe: toMaybe, 
+    toNullable: toNullable, 
+    showNullable: showNullable, 
+    eqNullable: eqNullable, 
+    eq1Nullable: eq1Nullable, 
+    ordNullable: ordNullable, 
+    ord1Nullable: ord1Nullable
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Maybe":204,"../Data.Ord":222,"../Data.Show":241,"../Prelude":278,"./foreign":217}],219:[function(require,module,exports){
+"use strict";
+
+exports.unsafeCompareImpl = function (lt) {
+  return function (eq) {
+    return function (gt) {
+      return function (x) {
+        return function (y) {
+          return x < y ? lt : x === y ? eq : gt;
+        };
+      };
+    };
+  };
+};
+
+},{}],220:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Ordering = require("../Data.Ordering");
+var unsafeCompare = $foreign.unsafeCompareImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value);
+module.exports = {
+    unsafeCompare: unsafeCompare
+};
+
+},{"../Data.Ordering":223,"./foreign":219}],221:[function(require,module,exports){
+"use strict";
+
+exports.ordArrayImpl = function (f) {
+  return function (xs) {
+    return function (ys) {
+      var i = 0;
+      var xlen = xs.length;
+      var ylen = ys.length;
+      while (i < xlen && i < ylen) {
+        var x = xs[i];
+        var y = ys[i];
+        var o = f(x)(y);
+        if (o !== 0) {
+          return o;
+        }
+        i++;
+      }
+      if (xlen === ylen) {
+        return 0;
+      } else if (xlen > ylen) {
+        return -1;
+      } else {
+        return 1;
+      }
+    };
+  };
+};
+
+},{}],222:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Ord_Unsafe = require("../Data.Ord.Unsafe");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Unit = require("../Data.Unit");
+var Data_Void = require("../Data.Void");
+var Ord = function (Eq0, compare) {
+    this.Eq0 = Eq0;
+    this.compare = compare;
+};
+var Ord1 = function (Eq10, compare1) {
+    this.Eq10 = Eq10;
+    this.compare1 = compare1;
+};
+var ordVoid = new Ord(function () {
+    return Data_Eq.eqVoid;
+}, function (v) {
+    return function (v1) {
+        return Data_Ordering.EQ.value;
+    };
+});
+var ordUnit = new Ord(function () {
+    return Data_Eq.eqUnit;
+}, function (v) {
+    return function (v1) {
+        return Data_Ordering.EQ.value;
+    };
+});
+var ordString = new Ord(function () {
+    return Data_Eq.eqString;
+}, Data_Ord_Unsafe.unsafeCompare);
+var ordOrdering = new Ord(function () {
+    return Data_Ordering.eqOrdering;
+}, function (v) {
+    return function (v1) {
+        if (v instanceof Data_Ordering.LT && v1 instanceof Data_Ordering.LT) {
+            return Data_Ordering.EQ.value;
+        };
+        if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.EQ) {
+            return Data_Ordering.EQ.value;
+        };
+        if (v instanceof Data_Ordering.GT && v1 instanceof Data_Ordering.GT) {
+            return Data_Ordering.EQ.value;
+        };
+        if (v instanceof Data_Ordering.LT) {
+            return Data_Ordering.LT.value;
+        };
+        if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.LT) {
+            return Data_Ordering.GT.value;
+        };
+        if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.GT) {
+            return Data_Ordering.LT.value;
+        };
+        if (v instanceof Data_Ordering.GT) {
+            return Data_Ordering.GT.value;
+        };
+        throw new Error("Failed pattern match at Data.Ord line 69, column 3 - line 69, column 21: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var ordNumber = new Ord(function () {
+    return Data_Eq.eqNumber;
+}, Data_Ord_Unsafe.unsafeCompare);
+var ordInt = new Ord(function () {
+    return Data_Eq.eqInt;
+}, Data_Ord_Unsafe.unsafeCompare);
+var ordChar = new Ord(function () {
+    return Data_Eq.eqChar;
+}, Data_Ord_Unsafe.unsafeCompare);
+var ordBoolean = new Ord(function () {
+    return Data_Eq.eqBoolean;
+}, Data_Ord_Unsafe.unsafeCompare);
+var compare1 = function (dict) {
+    return dict.compare1;
+};
+var compare = function (dict) {
+    return dict.compare;
+};
+var comparing = function (dictOrd) {
+    return function (f) {
+        return Data_Function.on(compare(dictOrd))(f);
+    };
+};
+var greaterThan = function (dictOrd) {
+    return function (a1) {
+        return function (a2) {
+            var v = compare(dictOrd)(a1)(a2);
+            if (v instanceof Data_Ordering.GT) {
+                return true;
+            };
+            return false;
+        };
+    };
+};
+var greaterThanOrEq = function (dictOrd) {
+    return function (a1) {
+        return function (a2) {
+            var v = compare(dictOrd)(a1)(a2);
+            if (v instanceof Data_Ordering.LT) {
+                return false;
+            };
+            return true;
+        };
+    };
+};
+var signum = function (dictOrd) {
+    return function (dictRing) {
+        return function (x) {
+            var $33 = greaterThanOrEq(dictOrd)(x)(Data_Semiring.zero(dictRing.Semiring0()));
+            if ($33) {
+                return Data_Semiring.one(dictRing.Semiring0());
+            };
+            return Data_Ring.negate(dictRing)(Data_Semiring.one(dictRing.Semiring0()));
+        };
+    };
+};
+var lessThan = function (dictOrd) {
+    return function (a1) {
+        return function (a2) {
+            var v = compare(dictOrd)(a1)(a2);
+            if (v instanceof Data_Ordering.LT) {
+                return true;
+            };
+            return false;
+        };
+    };
+};
+var lessThanOrEq = function (dictOrd) {
+    return function (a1) {
+        return function (a2) {
+            var v = compare(dictOrd)(a1)(a2);
+            if (v instanceof Data_Ordering.GT) {
+                return false;
+            };
+            return true;
+        };
+    };
+};
+var max = function (dictOrd) {
+    return function (x) {
+        return function (y) {
+            var v = compare(dictOrd)(x)(y);
+            if (v instanceof Data_Ordering.LT) {
+                return y;
+            };
+            if (v instanceof Data_Ordering.EQ) {
+                return x;
+            };
+            if (v instanceof Data_Ordering.GT) {
+                return x;
+            };
+            throw new Error("Failed pattern match at Data.Ord line 123, column 3 - line 126, column 12: " + [ v.constructor.name ]);
+        };
+    };
+};
+var min = function (dictOrd) {
+    return function (x) {
+        return function (y) {
+            var v = compare(dictOrd)(x)(y);
+            if (v instanceof Data_Ordering.LT) {
+                return x;
+            };
+            if (v instanceof Data_Ordering.EQ) {
+                return x;
+            };
+            if (v instanceof Data_Ordering.GT) {
+                return y;
+            };
+            throw new Error("Failed pattern match at Data.Ord line 114, column 3 - line 117, column 12: " + [ v.constructor.name ]);
+        };
+    };
+};
+var ordArray = function (dictOrd) {
+    return new Ord(function () {
+        return Data_Eq.eqArray(dictOrd.Eq0());
+    }, (function () {
+        var toDelta = function (x) {
+            return function (y) {
+                var v = compare(dictOrd)(x)(y);
+                if (v instanceof Data_Ordering.EQ) {
+                    return 0;
+                };
+                if (v instanceof Data_Ordering.LT) {
+                    return 1;
+                };
+                if (v instanceof Data_Ordering.GT) {
+                    return -1 | 0;
+                };
+                throw new Error("Failed pattern match at Data.Ord line 61, column 7 - line 66, column 1: " + [ v.constructor.name ]);
+            };
+        };
+        return function (xs) {
+            return function (ys) {
+                return compare(ordInt)(0)($foreign.ordArrayImpl(toDelta)(xs)(ys));
+            };
+        };
+    })());
+};
+var ord1Array = new Ord1(function () {
+    return Data_Eq.eq1Array;
+}, function (dictOrd) {
+    return compare(ordArray(dictOrd));
+});
+var clamp = function (dictOrd) {
+    return function (low) {
+        return function (hi) {
+            return function (x) {
+                return min(dictOrd)(hi)(max(dictOrd)(low)(x));
+            };
+        };
+    };
+};
+var between = function (dictOrd) {
+    return function (low) {
+        return function (hi) {
+            return function (x) {
+                if (lessThan(dictOrd)(x)(low)) {
+                    return false;
+                };
+                if (greaterThan(dictOrd)(x)(hi)) {
+                    return false;
+                };
+                return true;
+            };
+        };
+    };
+};
+var abs = function (dictOrd) {
+    return function (dictRing) {
+        return function (x) {
+            var $42 = greaterThanOrEq(dictOrd)(x)(Data_Semiring.zero(dictRing.Semiring0()));
+            if ($42) {
+                return x;
+            };
+            return Data_Ring.negate(dictRing)(x);
+        };
+    };
+};
+module.exports = {
+    Ord: Ord, 
+    Ord1: Ord1, 
+    abs: abs, 
+    between: between, 
+    clamp: clamp, 
+    compare: compare, 
+    compare1: compare1, 
+    comparing: comparing, 
+    greaterThan: greaterThan, 
+    greaterThanOrEq: greaterThanOrEq, 
+    lessThan: lessThan, 
+    lessThanOrEq: lessThanOrEq, 
+    max: max, 
+    min: min, 
+    signum: signum, 
+    ordBoolean: ordBoolean, 
+    ordInt: ordInt, 
+    ordNumber: ordNumber, 
+    ordString: ordString, 
+    ordChar: ordChar, 
+    ordUnit: ordUnit, 
+    ordVoid: ordVoid, 
+    ordArray: ordArray, 
+    ordOrdering: ordOrdering, 
+    ord1Array: ord1Array
+};
+
+},{"../Data.Eq":140,"../Data.Function":151,"../Data.Ord.Unsafe":220,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semiring":239,"../Data.Unit":259,"../Data.Void":260,"./foreign":221}],223:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Eq = require("../Data.Eq");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var LT = (function () {
+    function LT() {
+
+    };
+    LT.value = new LT();
+    return LT;
+})();
+var GT = (function () {
+    function GT() {
+
+    };
+    GT.value = new GT();
+    return GT;
+})();
+var EQ = (function () {
+    function EQ() {
+
+    };
+    EQ.value = new EQ();
+    return EQ;
+})();
+var showOrdering = new Data_Show.Show(function (v) {
+    if (v instanceof LT) {
+        return "LT";
+    };
+    if (v instanceof GT) {
+        return "GT";
+    };
+    if (v instanceof EQ) {
+        return "EQ";
+    };
+    throw new Error("Failed pattern match at Data.Ordering line 27, column 3 - line 28, column 3: " + [ v.constructor.name ]);
+});
+var semigroupOrdering = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        if (v instanceof LT) {
+            return LT.value;
+        };
+        if (v instanceof GT) {
+            return GT.value;
+        };
+        if (v instanceof EQ) {
+            return v1;
+        };
+        throw new Error("Failed pattern match at Data.Ordering line 22, column 3 - line 22, column 19: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+});
+var invert = function (v) {
+    if (v instanceof GT) {
+        return LT.value;
+    };
+    if (v instanceof EQ) {
+        return EQ.value;
+    };
+    if (v instanceof LT) {
+        return GT.value;
+    };
+    throw new Error("Failed pattern match at Data.Ordering line 34, column 1 - line 34, column 15: " + [ v.constructor.name ]);
+};
+var eqOrdering = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        if (v instanceof LT && v1 instanceof LT) {
+            return true;
+        };
+        if (v instanceof GT && v1 instanceof GT) {
+            return true;
+        };
+        if (v instanceof EQ && v1 instanceof EQ) {
+            return true;
+        };
+        return false;
+    };
+});
+module.exports = {
+    LT: LT, 
+    GT: GT, 
+    EQ: EQ, 
+    invert: invert, 
+    eqOrdering: eqOrdering, 
+    semigroupOrdering: semigroupOrdering, 
+    showOrdering: showOrdering
+};
+
+},{"../Data.Eq":140,"../Data.Semigroup":237,"../Data.Show":241}],224:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Profunctor = require("../Data.Profunctor");
+var Prelude = require("../Prelude");
+var Choice = function (Profunctor0, left, right) {
+    this.Profunctor0 = Profunctor0;
+    this.left = left;
+    this.right = right;
+};
+var right = function (dict) {
+    return dict.right;
+};
+var left = function (dict) {
+    return dict.left;
+};
+var splitChoice = function (dictCategory) {
+    return function (dictChoice) {
+        return function (l) {
+            return function (r) {
+                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(left(dictChoice)(l))(right(dictChoice)(r));
+            };
+        };
+    };
+};
+var fanin = function (dictCategory) {
+    return function (dictChoice) {
+        return function (l) {
+            return function (r) {
+                var join = Data_Profunctor.dimap(dictChoice.Profunctor0())(Data_Either.either(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(Control_Category.categoryFn)))(Control_Category.id(Control_Category.categoryFn))(Control_Category.id(dictCategory));
+                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(splitChoice(dictCategory)(dictChoice)(l)(r))(join);
+            };
+        };
+    };
+};
+var choiceFn = new Choice(function () {
+    return Data_Profunctor.profunctorFn;
+}, function (v) {
+    return function (v1) {
+        if (v1 instanceof Data_Either.Left) {
+            return Data_Either.Left.create(v(v1.value0));
+        };
+        if (v1 instanceof Data_Either.Right) {
+            return new Data_Either.Right(v1.value0);
+        };
+        throw new Error("Failed pattern match at Data.Profunctor.Choice line 33, column 3 - line 33, column 36: " + [ v.constructor.name, v1.constructor.name ]);
+    };
+}, Data_Functor.map(Data_Either.functorEither));
+module.exports = {
+    Choice: Choice, 
+    fanin: fanin, 
+    left: left, 
+    right: right, 
+    splitChoice: splitChoice, 
+    choiceFn: choiceFn
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Profunctor":231,"../Prelude":278}],225:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Profunctor = require("../Data.Profunctor");
+var Prelude = require("../Prelude");
+var Closed = function (Profunctor0, closed) {
+    this.Profunctor0 = Profunctor0;
+    this.closed = closed;
+};
+var closedFunction = new Closed(function () {
+    return Data_Profunctor.profunctorFn;
+}, Control_Semigroupoid.compose(Control_Semigroupoid.semigroupoidFn));
+var closed = function (dict) {
+    return dict.closed;
+};
+module.exports = {
+    Closed: Closed, 
+    closed: closed, 
+    closedFunction: closedFunction
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Profunctor":231,"../Prelude":278}],226:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Either = require("../Data.Either");
+var Data_Profunctor = require("../Data.Profunctor");
+var Cochoice = function (Profunctor0, unleft, unright) {
+    this.Profunctor0 = Profunctor0;
+    this.unleft = unleft;
+    this.unright = unright;
+};
+var unright = function (dict) {
+    return dict.unright;
+};
+var unleft = function (dict) {
+    return dict.unleft;
+};
+module.exports = {
+    Cochoice: Cochoice, 
+    unleft: unleft, 
+    unright: unright
+};
+
+},{"../Data.Either":138,"../Data.Profunctor":231}],227:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Monad = require("../Control.Monad");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Distributive = require("../Data.Distributive");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
+var Data_Profunctor_Cochoice = require("../Data.Profunctor.Cochoice");
+var Data_Profunctor_Costrong = require("../Data.Profunctor.Costrong");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Costar = function (x) {
+    return x;
+};
+var semigroupoidCostar = function (dictExtend) {
+    return new Control_Semigroupoid.Semigroupoid(function (v) {
+        return function (v1) {
+            return Control_Extend.composeCoKleisliFlipped(dictExtend)(v)(v1);
+        };
+    });
+};
+var profunctorCostar = function (dictFunctor) {
+    return new Data_Profunctor.Profunctor(function (f) {
+        return function (g) {
+            return function (v) {
+                return function ($54) {
+                    return g(v(Data_Functor.map(dictFunctor)(f)($54)));
+                };
+            };
+        };
+    });
+};
+var strongCostar = function (dictComonad) {
+    return new Data_Profunctor_Strong.Strong(function () {
+        return profunctorCostar((dictComonad.Extend0()).Functor0());
+    }, function (v) {
+        return function (x) {
+            return new Data_Tuple.Tuple(v(Data_Functor.map((dictComonad.Extend0()).Functor0())(Data_Tuple.fst)(x)), Data_Tuple.snd(Control_Comonad.extract(dictComonad)(x)));
+        };
+    }, function (v) {
+        return function (x) {
+            return new Data_Tuple.Tuple(Data_Tuple.fst(Control_Comonad.extract(dictComonad)(x)), v(Data_Functor.map((dictComonad.Extend0()).Functor0())(Data_Tuple.snd)(x)));
+        };
+    });
+};
+var newtypeCostar = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Costar);
+var hoistCostar = function (f) {
+    return function (v) {
+        return Data_Profunctor.lmap(Data_Profunctor.profunctorFn)(f)(v);
+    };
+};
+var functorCostar = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return function ($55) {
+            return f(v($55));
+        };
+    };
+});
+var invariantCostar = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorCostar));
+var distributiveCostar = new Data_Distributive.Distributive(function () {
+    return functorCostar;
+}, function (dictFunctor) {
+    return function (f) {
+        return function ($56) {
+            return Data_Distributive.distribute(distributiveCostar)(dictFunctor)(Data_Functor.map(dictFunctor)(f)($56));
+        };
+    };
+}, function (dictFunctor) {
+    return function (f) {
+        return function (a) {
+            return Data_Functor.map(dictFunctor)(function (v) {
+                return v(a);
+            })(f);
+        };
+    };
+});
+var costrongCostar = function (dictFunctor) {
+    return new Data_Profunctor_Costrong.Costrong(function () {
+        return profunctorCostar(dictFunctor);
+    }, function (v) {
+        return function (fb) {
+            var bd = v(Data_Functor.map(dictFunctor)(function (a) {
+                return new Data_Tuple.Tuple(a, Data_Tuple.snd(bd));
+            })(fb));
+            return Data_Tuple.fst(bd);
+        };
+    }, function (v) {
+        return function (fb) {
+            var db = v(Data_Functor.map(dictFunctor)(function (a) {
+                return new Data_Tuple.Tuple(Data_Tuple.fst(db), a);
+            })(fb));
+            return Data_Tuple.snd(db);
+        };
+    });
+};
+var cochoiceCostar = function (dictApplicative) {
+    return new Data_Profunctor_Cochoice.Cochoice(function () {
+        return profunctorCostar((dictApplicative.Apply0()).Functor0());
+    }, function (v) {
+        var g = function ($57) {
+            return Data_Either.either(Control_Category.id(Control_Category.categoryFn))(function (r) {
+                return g(Control_Applicative.pure(dictApplicative)(new Data_Either.Right(r)));
+            })(v($57));
+        };
+        return function ($58) {
+            return g(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Left.create)($58));
+        };
+    }, function (v) {
+        var g = function ($59) {
+            return Data_Either.either(function (l) {
+                return g(Control_Applicative.pure(dictApplicative)(new Data_Either.Left(l)));
+            })(Control_Category.id(Control_Category.categoryFn))(v($59));
+        };
+        return function ($60) {
+            return g(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Right.create)($60));
+        };
+    });
+};
+var closedCostar = function (dictFunctor) {
+    return new Data_Profunctor_Closed.Closed(function () {
+        return profunctorCostar(dictFunctor);
+    }, function (v) {
+        return function (g) {
+            return function (x) {
+                return v(Data_Functor.map(dictFunctor)(function (v1) {
+                    return v1(x);
+                })(g));
+            };
+        };
+    });
+};
+var categoryCostar = function (dictComonad) {
+    return new Control_Category.Category(function () {
+        return semigroupoidCostar(dictComonad.Extend0());
+    }, Control_Comonad.extract(dictComonad));
+};
+var applyCostar = new Control_Apply.Apply(function () {
+    return functorCostar;
+}, function (v) {
+    return function (v1) {
+        return function (a) {
+            return v(a)(v1(a));
+        };
+    };
+});
+var bindCostar = new Control_Bind.Bind(function () {
+    return applyCostar;
+}, function (v) {
+    return function (f) {
+        return function (x) {
+            var v1 = f(v(x));
+            return v1(x);
+        };
+    };
+});
+var applicativeCostar = new Control_Applicative.Applicative(function () {
+    return applyCostar;
+}, function (a) {
+    return function (v) {
+        return a;
+    };
+});
+var monadCostar = new Control_Monad.Monad(function () {
+    return applicativeCostar;
+}, function () {
+    return bindCostar;
+});
+module.exports = {
+    Costar: Costar, 
+    hoistCostar: hoistCostar, 
+    newtypeCostar: newtypeCostar, 
+    semigroupoidCostar: semigroupoidCostar, 
+    categoryCostar: categoryCostar, 
+    functorCostar: functorCostar, 
+    invariantCostar: invariantCostar, 
+    applyCostar: applyCostar, 
+    applicativeCostar: applicativeCostar, 
+    bindCostar: bindCostar, 
+    monadCostar: monadCostar, 
+    distributiveCostar: distributiveCostar, 
+    profunctorCostar: profunctorCostar, 
+    strongCostar: strongCostar, 
+    costrongCostar: costrongCostar, 
+    cochoiceCostar: cochoiceCostar, 
+    closedCostar: closedCostar
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Monad":87,"../Control.Semigroupoid":93,"../Data.Distributive":136,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Closed":225,"../Data.Profunctor.Cochoice":226,"../Data.Profunctor.Costrong":228,"../Data.Profunctor.Strong":230,"../Data.Tuple":255,"../Prelude":278}],228:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Tuple = require("../Data.Tuple");
+var Costrong = function (Profunctor0, unfirst, unsecond) {
+    this.Profunctor0 = Profunctor0;
+    this.unfirst = unfirst;
+    this.unsecond = unsecond;
+};
+var unsecond = function (dict) {
+    return dict.unsecond;
+};
+var unfirst = function (dict) {
+    return dict.unfirst;
+};
+module.exports = {
+    Costrong: Costrong, 
+    unfirst: unfirst, 
+    unsecond: unsecond
+};
+
+},{"../Data.Profunctor":231,"../Data.Tuple":255}],229:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Alt = require("../Control.Alt");
+var Control_Alternative = require("../Control.Alternative");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Monad = require("../Control.Monad");
+var Control_MonadPlus = require("../Control.MonadPlus");
+var Control_MonadZero = require("../Control.MonadZero");
+var Control_Plus = require("../Control.Plus");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Distributive = require("../Data.Distributive");
+var Data_Either = require("../Data.Either");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Profunctor_Choice = require("../Data.Profunctor.Choice");
+var Data_Profunctor_Closed = require("../Data.Profunctor.Closed");
+var Data_Profunctor_Strong = require("../Data.Profunctor.Strong");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Star = function (x) {
+    return x;
+};
+var semigroupoidStar = function (dictBind) {
+    return new Control_Semigroupoid.Semigroupoid(function (v) {
+        return function (v1) {
+            return function (x) {
+                return Control_Bind.bind(dictBind)(v1(x))(v);
+            };
+        };
+    });
+};
+var profunctorStar = function (dictFunctor) {
+    return new Data_Profunctor.Profunctor(function (f) {
+        return function (g) {
+            return function (v) {
+                return function ($78) {
+                    return Data_Functor.map(dictFunctor)(g)(v(f($78)));
+                };
+            };
+        };
+    });
+};
+var strongStar = function (dictFunctor) {
+    return new Data_Profunctor_Strong.Strong(function () {
+        return profunctorStar(dictFunctor);
+    }, function (v) {
+        return function (v1) {
+            return Data_Functor.map(dictFunctor)(function (v2) {
+                return new Data_Tuple.Tuple(v2, v1.value1);
+            })(v(v1.value0));
+        };
+    }, function (v) {
+        return function (v1) {
+            return Data_Functor.map(dictFunctor)(Data_Tuple.Tuple.create(v1.value0))(v(v1.value1));
+        };
+    });
+};
+var newtypeStar = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Star);
+var invariantStar = function (dictInvariant) {
+    return new Data_Functor_Invariant.Invariant(function (f) {
+        return function (g) {
+            return function (v) {
+                return function ($79) {
+                    return Data_Functor_Invariant.imap(dictInvariant)(f)(g)(v($79));
+                };
+            };
+        };
+    });
+};
+var hoistStar = function (f) {
+    return function (v) {
+        return function ($80) {
+            return f(v($80));
+        };
+    };
+};
+var functorStar = function (dictFunctor) {
+    return new Data_Functor.Functor(function (f) {
+        return function (v) {
+            return function ($81) {
+                return Data_Functor.map(dictFunctor)(f)(v($81));
+            };
+        };
+    });
+};
+var distributiveStar = function (dictDistributive) {
+    return new Data_Distributive.Distributive(function () {
+        return functorStar(dictDistributive.Functor0());
+    }, function (dictFunctor) {
+        return function (f) {
+            return function ($82) {
+                return Data_Distributive.distribute(distributiveStar(dictDistributive))(dictFunctor)(Data_Functor.map(dictFunctor)(f)($82));
+            };
+        };
+    }, function (dictFunctor) {
+        return function (f) {
+            return function (a) {
+                return Data_Distributive.collect(dictDistributive)(dictFunctor)(function (v) {
+                    return v(a);
+                })(f);
+            };
+        };
+    });
+};
+var closedStar = function (dictDistributive) {
+    return new Data_Profunctor_Closed.Closed(function () {
+        return profunctorStar(dictDistributive.Functor0());
+    }, function (v) {
+        return function (g) {
+            return Data_Distributive.distribute(dictDistributive)(Data_Functor.functorFn)(function ($83) {
+                return v(g($83));
+            });
+        };
+    });
+};
+var choiceStar = function (dictApplicative) {
+    return new Data_Profunctor_Choice.Choice(function () {
+        return profunctorStar((dictApplicative.Apply0()).Functor0());
+    }, function (v) {
+        return Star(Data_Either.either(function ($84) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Left.create)(v($84));
+        })(function ($85) {
+            return Control_Applicative.pure(dictApplicative)(Data_Either.Right.create($85));
+        }));
+    }, function (v) {
+        return Star(Data_Either.either(function ($86) {
+            return Control_Applicative.pure(dictApplicative)(Data_Either.Left.create($86));
+        })(function ($87) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Either.Right.create)(v($87));
+        }));
+    });
+};
+var categoryStar = function (dictMonad) {
+    return new Control_Category.Category(function () {
+        return semigroupoidStar(dictMonad.Bind1());
+    }, Control_Applicative.pure(dictMonad.Applicative0()));
+};
+var applyStar = function (dictApply) {
+    return new Control_Apply.Apply(function () {
+        return functorStar(dictApply.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return function (a) {
+                return Control_Apply.apply(dictApply)(v(a))(v1(a));
+            };
+        };
+    });
+};
+var bindStar = function (dictBind) {
+    return new Control_Bind.Bind(function () {
+        return applyStar(dictBind.Apply0());
+    }, function (v) {
+        return function (f) {
+            return function (x) {
+                return Control_Bind.bind(dictBind)(v(x))(function (a) {
+                    var v1 = f(a);
+                    return v1(x);
+                });
+            };
+        };
+    });
+};
+var applicativeStar = function (dictApplicative) {
+    return new Control_Applicative.Applicative(function () {
+        return applyStar(dictApplicative.Apply0());
+    }, function (a) {
+        return function (v) {
+            return Control_Applicative.pure(dictApplicative)(a);
+        };
+    });
+};
+var monadStar = function (dictMonad) {
+    return new Control_Monad.Monad(function () {
+        return applicativeStar(dictMonad.Applicative0());
+    }, function () {
+        return bindStar(dictMonad.Bind1());
+    });
+};
+var altStar = function (dictAlt) {
+    return new Control_Alt.Alt(function () {
+        return functorStar(dictAlt.Functor0());
+    }, function (v) {
+        return function (v1) {
+            return function (a) {
+                return Control_Alt.alt(dictAlt)(v(a))(v1(a));
+            };
+        };
+    });
+};
+var plusStar = function (dictPlus) {
+    return new Control_Plus.Plus(function () {
+        return altStar(dictPlus.Alt0());
+    }, function (v) {
+        return Control_Plus.empty(dictPlus);
+    });
+};
+var alternativeStar = function (dictAlternative) {
+    return new Control_Alternative.Alternative(function () {
+        return applicativeStar(dictAlternative.Applicative0());
+    }, function () {
+        return plusStar(dictAlternative.Plus1());
+    });
+};
+var monadZeroStar = function (dictMonadZero) {
+    return new Control_MonadZero.MonadZero(function () {
+        return alternativeStar(dictMonadZero.Alternative1());
+    }, function () {
+        return monadStar(dictMonadZero.Monad0());
+    });
+};
+var monadPlusStar = function (dictMonadPlus) {
+    return new Control_MonadPlus.MonadPlus(function () {
+        return monadZeroStar(dictMonadPlus.MonadZero0());
+    });
+};
+module.exports = {
+    Star: Star, 
+    hoistStar: hoistStar, 
+    newtypeStar: newtypeStar, 
+    semigroupoidStar: semigroupoidStar, 
+    categoryStar: categoryStar, 
+    functorStar: functorStar, 
+    invariantStar: invariantStar, 
+    applyStar: applyStar, 
+    applicativeStar: applicativeStar, 
+    bindStar: bindStar, 
+    monadStar: monadStar, 
+    altStar: altStar, 
+    plusStar: plusStar, 
+    alternativeStar: alternativeStar, 
+    monadZeroStar: monadZeroStar, 
+    monadPlusStar: monadPlusStar, 
+    distributiveStar: distributiveStar, 
+    profunctorStar: profunctorStar, 
+    strongStar: strongStar, 
+    choiceStar: choiceStar, 
+    closedStar: closedStar
+};
+
+},{"../Control.Alt":38,"../Control.Alternative":39,"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":87,"../Control.MonadPlus":88,"../Control.MonadZero":89,"../Control.Plus":92,"../Control.Semigroupoid":93,"../Data.Distributive":136,"../Data.Either":138,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.Newtype":215,"../Data.Profunctor":231,"../Data.Profunctor.Choice":224,"../Data.Profunctor.Closed":225,"../Data.Profunctor.Strong":230,"../Data.Tuple":255,"../Prelude":278}],230:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Functor = require("../Data.Functor");
+var Data_Profunctor = require("../Data.Profunctor");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Strong = function (Profunctor0, first, second) {
+    this.Profunctor0 = Profunctor0;
+    this.first = first;
+    this.second = second;
+};
+var strongFn = new Strong(function () {
+    return Data_Profunctor.profunctorFn;
+}, function (a2b) {
+    return function (v) {
+        return new Data_Tuple.Tuple(a2b(v.value0), v.value1);
+    };
+}, Data_Functor.map(Data_Tuple.functorTuple));
+var second = function (dict) {
+    return dict.second;
+};
+var first = function (dict) {
+    return dict.first;
+};
+var splitStrong = function (dictCategory) {
+    return function (dictStrong) {
+        return function (l) {
+            return function (r) {
+                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(first(dictStrong)(l))(second(dictStrong)(r));
+            };
+        };
+    };
+};
+var fanout = function (dictCategory) {
+    return function (dictStrong) {
+        return function (l) {
+            return function (r) {
+                var split = Data_Profunctor.dimap(dictStrong.Profunctor0())(Control_Category.id(Control_Category.categoryFn))(function (a) {
+                    return new Data_Tuple.Tuple(a, a);
+                })(Control_Category.id(dictCategory));
+                return Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0())(split)(splitStrong(dictCategory)(dictStrong)(l)(r));
+            };
+        };
+    };
+};
+module.exports = {
+    Strong: Strong, 
+    fanout: fanout, 
+    first: first, 
+    second: second, 
+    splitStrong: splitStrong, 
+    strongFn: strongFn
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Functor":157,"../Data.Profunctor":231,"../Data.Tuple":255,"../Prelude":278}],231:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Newtype = require("../Data.Newtype");
+var Prelude = require("../Prelude");
+var Profunctor = function (dimap) {
+    this.dimap = dimap;
+};
+var profunctorFn = new Profunctor(function (a2b) {
+    return function (c2d) {
+        return function (b2c) {
+            return function ($9) {
+                return c2d(b2c(a2b($9)));
+            };
+        };
+    };
+});
+var dimap = function (dict) {
+    return dict.dimap;
+};
+var lmap = function (dictProfunctor) {
+    return function (a2b) {
+        return dimap(dictProfunctor)(a2b)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var rmap = function (dictProfunctor) {
+    return function (b2c) {
+        return dimap(dictProfunctor)(Control_Category.id(Control_Category.categoryFn))(b2c);
+    };
+};
+var unwrapIso = function (dictProfunctor) {
+    return function (dictNewtype) {
+        return dimap(dictProfunctor)(Data_Newtype.wrap(dictNewtype))(Data_Newtype.unwrap(dictNewtype));
+    };
+};
+var wrapIso = function (dictProfunctor) {
+    return function (dictNewtype) {
+        return function (v) {
+            return dimap(dictProfunctor)(Data_Newtype.unwrap(dictNewtype))(Data_Newtype.wrap(dictNewtype));
+        };
+    };
+};
+var arr = function (dictCategory) {
+    return function (dictProfunctor) {
+        return function (f) {
+            return rmap(dictProfunctor)(f)(Control_Category.id(dictCategory));
+        };
+    };
+};
+module.exports = {
+    Profunctor: Profunctor, 
+    arr: arr, 
+    dimap: dimap, 
+    lmap: lmap, 
+    rmap: rmap, 
+    unwrapIso: unwrapIso, 
+    wrapIso: wrapIso, 
+    profunctorFn: profunctorFn
+};
+
+},{"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Newtype":215,"../Prelude":278}],232:[function(require,module,exports){
+"use strict";
+
+exports.intSub = function (x) {
+  return function (y) {
+    /* jshint bitwise: false */
+    return x - y | 0;
+  };
+};
+
+exports.numSub = function (n1) {
+  return function (n2) {
+    return n1 - n2;
+  };
+};
+
+},{}],233:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Unit = require("../Data.Unit");
+var Ring = function (Semiring0, sub) {
+    this.Semiring0 = Semiring0;
+    this.sub = sub;
+};
+var sub = function (dict) {
+    return dict.sub;
+};
+var ringUnit = new Ring(function () {
+    return Data_Semiring.semiringUnit;
+}, function (v) {
+    return function (v1) {
+        return Data_Unit.unit;
+    };
+});
+var ringNumber = new Ring(function () {
+    return Data_Semiring.semiringNumber;
+}, $foreign.numSub);
+var ringInt = new Ring(function () {
+    return Data_Semiring.semiringInt;
+}, $foreign.intSub);
+var ringFn = function (dictRing) {
+    return new Ring(function () {
+        return Data_Semiring.semiringFn(dictRing.Semiring0());
+    }, function (f) {
+        return function (g) {
+            return function (x) {
+                return sub(dictRing)(f(x))(g(x));
+            };
+        };
+    });
+};
+var negate = function (dictRing) {
+    return function (a) {
+        return sub(dictRing)(Data_Semiring.zero(dictRing.Semiring0()))(a);
+    };
+};
+module.exports = {
+    Ring: Ring, 
+    negate: negate, 
+    sub: sub, 
+    ringInt: ringInt, 
+    ringNumber: ringNumber, 
+    ringUnit: ringUnit, 
+    ringFn: ringFn
+};
+
+},{"../Data.Semiring":239,"../Data.Unit":259,"./foreign":232}],234:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Monoid_Dual = require("../Data.Monoid.Dual");
+var Data_Monoid_Multiplicative = require("../Data.Monoid.Multiplicative");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Act = function (x) {
+    return x;
+};
+var Foldable1 = function (Foldable0, fold1, foldMap1) {
+    this.Foldable0 = Foldable0;
+    this.fold1 = fold1;
+    this.foldMap1 = foldMap1;
+};
+var semigroupAct = function (dictApply) {
+    return new Data_Semigroup.Semigroup(function (v) {
+        return function (v1) {
+            return Control_Apply.applySecond(dictApply)(v)(v1);
+        };
+    });
+};
+var getAct = function (v) {
+    return v;
+};
+var foldMap1 = function (dict) {
+    return dict.foldMap1;
+};
+var traverse1_ = function (dictFoldable1) {
+    return function (dictApply) {
+        return function (f) {
+            return function (t) {
+                return Data_Functor.voidRight(dictApply.Functor0())(Data_Unit.unit)(getAct(foldMap1(dictFoldable1)(semigroupAct(dictApply))(function ($28) {
+                    return Act(f($28));
+                })(t)));
+            };
+        };
+    };
+};
+var for1_ = function (dictFoldable1) {
+    return function (dictApply) {
+        return Data_Function.flip(traverse1_(dictFoldable1)(dictApply));
+    };
+};
+var sequence1_ = function (dictFoldable1) {
+    return function (dictApply) {
+        return traverse1_(dictFoldable1)(dictApply)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var fold1Default = function (dictFoldable1) {
+    return function (dictSemigroup) {
+        return foldMap1(dictFoldable1)(dictSemigroup)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var foldableDual = new Foldable1(function () {
+    return Data_Foldable.foldableDual;
+}, function (dictSemigroup) {
+    return fold1Default(foldableDual)(dictSemigroup);
+}, function (dictSemigroup) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+});
+var foldableMultiplicative = new Foldable1(function () {
+    return Data_Foldable.foldableMultiplicative;
+}, function (dictSemigroup) {
+    return fold1Default(foldableMultiplicative)(dictSemigroup);
+}, function (dictSemigroup) {
+    return function (f) {
+        return function (v) {
+            return f(v);
+        };
+    };
+});
+var fold1 = function (dict) {
+    return dict.fold1;
+};
+var foldMap1Default = function (dictFoldable1) {
+    return function (dictFunctor) {
+        return function (dictSemigroup) {
+            return function (f) {
+                return function ($29) {
+                    return fold1(dictFoldable1)(dictSemigroup)(Data_Functor.map(dictFunctor)(f)($29));
+                };
+            };
+        };
+    };
+};
+module.exports = {
+    Foldable1: Foldable1, 
+    fold1: fold1, 
+    fold1Default: fold1Default, 
+    foldMap1: foldMap1, 
+    foldMap1Default: foldMap1Default, 
+    for1_: for1_, 
+    sequence1_: sequence1_, 
+    traverse1_: traverse1_, 
+    foldableDual: foldableDual, 
+    foldableMultiplicative: foldableMultiplicative
+};
+
+},{"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.Monoid.Dual":210,"../Data.Monoid.Multiplicative":212,"../Data.Semigroup":237,"../Data.Unit":259,"../Prelude":278}],235:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Category = require("../Control.Category");
+var Data_Functor = require("../Data.Functor");
+var Data_Semigroup_Foldable = require("../Data.Semigroup.Foldable");
+var Data_Traversable = require("../Data.Traversable");
+var Prelude = require("../Prelude");
+var Traversable1 = function (Foldable10, Traversable1, sequence1, traverse1) {
+    this.Foldable10 = Foldable10;
+    this.Traversable1 = Traversable1;
+    this.sequence1 = sequence1;
+    this.traverse1 = traverse1;
+};
+var traverse1 = function (dict) {
+    return dict.traverse1;
+};
+var sequence1Default = function (dictTraversable1) {
+    return function (dictApply) {
+        return traverse1(dictTraversable1)(dictApply)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var sequence1 = function (dict) {
+    return dict.sequence1;
+};
+var traverse1Default = function (dictTraversable1) {
+    return function (dictApply) {
+        return function (f) {
+            return function (ta) {
+                return sequence1(dictTraversable1)(dictApply)(Data_Functor.map((dictTraversable1.Traversable1()).Functor0())(f)(ta));
+            };
+        };
+    };
+};
+module.exports = {
+    Traversable1: Traversable1, 
+    sequence1: sequence1, 
+    sequence1Default: sequence1Default, 
+    traverse1: traverse1, 
+    traverse1Default: traverse1Default
+};
+
+},{"../Control.Category":47,"../Data.Functor":157,"../Data.Semigroup.Foldable":234,"../Data.Traversable":254,"../Prelude":278}],236:[function(require,module,exports){
+"use strict";
+
+exports.concatString = function (s1) {
+  return function (s2) {
+    return s1 + s2;
+  };
+};
+
+exports.concatArray = function (xs) {
+  return function (ys) {
+    if (xs.length === 0) return ys;
+    if (ys.length === 0) return xs;
+    return xs.concat(ys);
+  };
+};
+
+},{}],237:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Unit = require("../Data.Unit");
+var Data_Void = require("../Data.Void");
+var Semigroup = function (append) {
+    this.append = append;
+};
+var semigroupVoid = new Semigroup(function (v) {
+    return Data_Void.absurd;
+});
+var semigroupUnit = new Semigroup(function (v) {
+    return function (v1) {
+        return Data_Unit.unit;
+    };
+});
+var semigroupString = new Semigroup($foreign.concatString);
+var semigroupArray = new Semigroup($foreign.concatArray);
+var append = function (dict) {
+    return dict.append;
+};
+var semigroupFn = function (dictSemigroup) {
+    return new Semigroup(function (f) {
+        return function (g) {
+            return function (x) {
+                return append(dictSemigroup)(f(x))(g(x));
+            };
+        };
+    });
+};
+module.exports = {
+    Semigroup: Semigroup, 
+    append: append, 
+    semigroupString: semigroupString, 
+    semigroupUnit: semigroupUnit, 
+    semigroupVoid: semigroupVoid, 
+    semigroupFn: semigroupFn, 
+    semigroupArray: semigroupArray
+};
+
+},{"../Data.Unit":259,"../Data.Void":260,"./foreign":236}],238:[function(require,module,exports){
+"use strict";
+
+exports.intAdd = function (x) {
+  return function (y) {
+    /* jshint bitwise: false */
+    return x + y | 0;
+  };
+};
+
+exports.intMul = function (x) {
+  return function (y) {
+    /* jshint bitwise: false */
+    return x * y | 0;
+  };
+};
+
+exports.numAdd = function (n1) {
+  return function (n2) {
+    return n1 + n2;
+  };
+};
+
+exports.numMul = function (n1) {
+  return function (n2) {
+    return n1 * n2;
+  };
+};
+
+},{}],239:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Unit = require("../Data.Unit");
+var Semiring = function (add, mul, one, zero) {
+    this.add = add;
+    this.mul = mul;
+    this.one = one;
+    this.zero = zero;
+};
+var zero = function (dict) {
+    return dict.zero;
+};
+var semiringUnit = new Semiring(function (v) {
+    return function (v1) {
+        return Data_Unit.unit;
+    };
+}, function (v) {
+    return function (v1) {
+        return Data_Unit.unit;
+    };
+}, Data_Unit.unit, Data_Unit.unit);
+var semiringNumber = new Semiring($foreign.numAdd, $foreign.numMul, 1.0, 0.0);
+var semiringInt = new Semiring($foreign.intAdd, $foreign.intMul, 1, 0);
+var one = function (dict) {
+    return dict.one;
+};
+var mul = function (dict) {
+    return dict.mul;
+};
+var add = function (dict) {
+    return dict.add;
+};
+var semiringFn = function (dictSemiring) {
+    return new Semiring(function (f) {
+        return function (g) {
+            return function (x) {
+                return add(dictSemiring)(f(x))(g(x));
+            };
+        };
+    }, function (f) {
+        return function (g) {
+            return function (x) {
+                return mul(dictSemiring)(f(x))(g(x));
+            };
+        };
+    }, function (v) {
+        return one(dictSemiring);
+    }, function (v) {
+        return zero(dictSemiring);
+    });
+};
+module.exports = {
+    Semiring: Semiring, 
+    add: add, 
+    mul: mul, 
+    one: one, 
+    zero: zero, 
+    semiringInt: semiringInt, 
+    semiringNumber: semiringNumber, 
+    semiringFn: semiringFn, 
+    semiringUnit: semiringUnit
+};
+
+},{"../Data.Unit":259,"./foreign":238}],240:[function(require,module,exports){
+"use strict";
+
+exports.showIntImpl = function (n) {
+  return n.toString();
+};
+
+exports.showNumberImpl = function (n) {
+  var str = n.toString();
+  return isNaN(str + ".0") ? str : str + ".0";
+};
+
+exports.showCharImpl = function (c) {
+  var code = c.charCodeAt(0);
+  if (code < 0x20 || code === 0x7F) {
+    switch (c) {
+      case "\x07": return "'\\a'";
+      case "\b": return "'\\b'";
+      case "\f": return "'\\f'";
+      case "\n": return "'\\n'";
+      case "\r": return "'\\r'";
+      case "\t": return "'\\t'";
+      case "\v": return "'\\v'";
+    }
+    return "'\\" + code.toString(10) + "'";
+  }
+  return c === "'" || c === "\\" ? "'\\" + c + "'" : "'" + c + "'";
+};
+
+exports.showStringImpl = function (s) {
+  var l = s.length;
+  return "\"" + s.replace(
+    /[\0-\x1F\x7F"\\]/g, // eslint-disable-line no-control-regex
+    function (c, i) {
+      switch (c) {
+        case "\"":
+        case "\\":
+          return "\\" + c;
+        case "\x07": return "\\a";
+        case "\b": return "\\b";
+        case "\f": return "\\f";
+        case "\n": return "\\n";
+        case "\r": return "\\r";
+        case "\t": return "\\t";
+        case "\v": return "\\v";
+      }
+      var k = i + 1;
+      var empty = k < l && s[k] >= "0" && s[k] <= "9" ? "\\&" : "";
+      return "\\" + c.charCodeAt(0).toString(10) + empty;
+    }
+  ) + "\"";
+};
+
+exports.showArrayImpl = function (f) {
+  return function (xs) {
+    var ss = [];
+    for (var i = 0, l = xs.length; i < l; i++) {
+      ss[i] = f(xs[i]);
+    }
+    return "[" + ss.join(",") + "]";
+  };
+};
+
+},{}],241:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Show = function (show) {
+    this.show = show;
+};
+var showString = new Show($foreign.showStringImpl);
+var showNumber = new Show($foreign.showNumberImpl);
+var showInt = new Show($foreign.showIntImpl);
+var showChar = new Show($foreign.showCharImpl);
+var showBoolean = new Show(function (v) {
+    if (v) {
+        return "true";
+    };
+    if (!v) {
+        return "false";
+    };
+    throw new Error("Failed pattern match at Data.Show line 13, column 3 - line 14, column 3: " + [ v.constructor.name ]);
+});
+var show = function (dict) {
+    return dict.show;
+};
+var showArray = function (dictShow) {
+    return new Show($foreign.showArrayImpl(show(dictShow)));
+};
+module.exports = {
+    Show: Show, 
+    show: show, 
+    showBoolean: showBoolean, 
+    showInt: showInt, 
+    showNumber: showNumber, 
+    showChar: showChar, 
+    showString: showString, 
+    showArray: showArray
+};
+
+},{"./foreign":240}],242:[function(require,module,exports){
+"use strict";
+
+exports["new"] = function () {
+  return {};
+};
+
+exports.peekImpl = function (just) {
+  return function (nothing) {
+    return function (m) {
+      return function (k) {
+        return function () {
+          return {}.hasOwnProperty.call(m, k) ? just(m[k]) : nothing;
+        };
+      };
+    };
+  };
+};
+
+exports.poke = function (m) {
+  return function (k) {
+    return function (v) {
+      return function () {
+        m[k] = v;
+        return m;
+      };
+    };
+  };
+};
+
+exports["delete"] = function (m) {
+  return function (k) {
+    return function () {
+      delete m[k];
+      return m;
+    };
+  };
+};
+
+},{}],243:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_ST = require("../Control.Monad.ST");
+var Data_Maybe = require("../Data.Maybe");
+var peek = $foreign.peekImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+module.exports = {
+    peek: peek, 
+    "delete": $foreign["delete"], 
+    "new": $foreign["new"], 
+    poke: $foreign.poke
+};
+
+},{"../Control.Monad.Eff":71,"../Control.Monad.ST":80,"../Data.Maybe":204,"./foreign":242}],244:[function(require,module,exports){
+"use strict";
+
+exports._copyEff = function (m) {
+  return function () {
+    var r = {};
+    for (var k in m) {
+      if (hasOwnProperty.call(m, k)) {
+        r[k] = m[k];
+      }
+    }
+    return r;
+  };
+};
+
+exports.empty = {};
+
+exports.runST = function (f) {
+  return f;
+};
+
+exports._fmapStrMap = function (m0, f) {
+  var m = {};
+  for (var k in m0) {
+    if (hasOwnProperty.call(m0, k)) {
+      m[k] = f(m0[k]);
+    }
+  }
+  return m;
+};
+
+exports._mapWithKey = function (m0, f) {
+  var m = {};
+  for (var k in m0) {
+    if (hasOwnProperty.call(m0, k)) {
+      m[k] = f(k)(m0[k]);
+    }
+  }
+  return m;
+};
+
+exports._foldM = function (bind) {
+  return function (f) {
+    return function (mz) {
+      return function (m) {
+        var acc = mz;
+        function g(k) {
+          return function (z) {
+            return f(z)(k)(m[k]);
+          };
+        }
+        for (var k in m) {
+          if (hasOwnProperty.call(m, k)) {
+            acc = bind(acc)(g(k));
+          }
+        }
+        return acc;
+      };
+    };
+  };
+};
+
+exports._foldSCStrMap = function (m, z, f, fromMaybe) {
+  var acc = z;
+  for (var k in m) {
+    if (hasOwnProperty.call(m, k)) {
+      var maybeR = f(acc)(k)(m[k]);
+      var r = fromMaybe(null)(maybeR);
+      if (r === null) return acc;
+      else acc = r;
+    }
+  }
+  return acc;
+};
+
+exports.all = function (f) {
+  return function (m) {
+    for (var k in m) {
+      if (hasOwnProperty.call(m, k) && !f(k)(m[k])) return false;
+    }
+    return true;
+  };
+};
+
+exports.size = function (m) {
+  var s = 0;
+  for (var k in m) {
+    if (hasOwnProperty.call(m, k)) {
+      ++s;
+    }
+  }
+  return s;
+};
+
+exports._lookup = function (no, yes, k, m) {
+  return k in m ? yes(m[k]) : no;
+};
+
+exports._unsafeDeleteStrMap = function (m, k) {
+  delete m[k];
+  return m;
+};
+
+exports._lookupST = function (no, yes, k, m) {
+  return function () {
+    return k in m ? yes(m[k]) : no;
+  };
+};
+
+function toArrayWithKey(f) {
+  return function (m) {
+    var r = [];
+    for (var k in m) {
+      if (hasOwnProperty.call(m, k)) {
+        r.push(f(k)(m[k]));
+      }
+    }
+    return r;
+  };
+}
+
+exports.toArrayWithKey = toArrayWithKey;
+
+exports.keys = Object.keys || toArrayWithKey(function (k) {
+  return function () { return k; };
+});
+
+},{}],245:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_ST = require("../Control.Monad.ST");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Array = require("../Data.Array");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Ord = require("../Data.Ord");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_StrMap_ST = require("../Data.StrMap.ST");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unfoldable = require("../Data.Unfoldable");
+var Prelude = require("../Prelude");
+var values = $foreign.toArrayWithKey(function (v) {
+    return function (v1) {
+        return v1;
+    };
+});
+var toUnfoldable = function (dictUnfoldable) {
+    return function ($44) {
+        return Data_Array.toUnfoldable(dictUnfoldable)($foreign.toArrayWithKey(Data_Tuple.Tuple.create)($44));
+    };
+};
+var toAscUnfoldable = function (dictUnfoldable) {
+    return function ($45) {
+        return Data_Array.toUnfoldable(dictUnfoldable)(Data_Array.sortWith(Data_Ord.ordString)(Data_Tuple.fst)($foreign.toArrayWithKey(Data_Tuple.Tuple.create)($45)));
+    };
+};
+var toAscArray = toAscUnfoldable(Data_Unfoldable.unfoldableArray);
+var toArray = $foreign.toArrayWithKey(Data_Tuple.Tuple.create);
+var thawST = $foreign._copyEff;
+var showStrMap = function (dictShow) {
+    return new Data_Show.Show(function (m) {
+        return "(fromFoldable " + (Data_Show.show(Data_Show.showArray(Data_Tuple.showTuple(Data_Show.showString)(dictShow)))(toArray(m)) + ")");
+    });
+};
+var pureST = function (f) {
+    return Control_Monad_Eff.runPure($foreign.runST(f));
+};
+var singleton = function (k) {
+    return function (v) {
+        return pureST(function __do() {
+            var v1 = Data_StrMap_ST["new"]();
+            return Data_StrMap_ST.poke(v1)(k)(v)();
+        });
+    };
+};
+var mutate = function (f) {
+    return function (m) {
+        return pureST(function __do() {
+            var v = thawST(m)();
+            var v1 = f(v)();
+            return v;
+        });
+    };
+};
+var member = Data_Function_Uncurried.runFn4($foreign._lookup)(false)(Data_Function["const"](true));
+var mapWithKey = function (f) {
+    return function (m) {
+        return $foreign._mapWithKey(m, f);
+    };
+};
+var lookup = Data_Function_Uncurried.runFn4($foreign._lookup)(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
+var isSubmap = function (dictEq) {
+    return function (m1) {
+        return function (m2) {
+            var f = function (k) {
+                return function (v) {
+                    return $foreign._lookup(false, Data_Eq.eq(dictEq)(v), k, m2);
+                };
+            };
+            return $foreign.all(f)(m1);
+        };
+    };
+};
+var isEmpty = $foreign.all(function (v) {
+    return function (v1) {
+        return false;
+    };
+});
+var insert = function (k) {
+    return function (v) {
+        return mutate(function (s) {
+            return Data_Functor["void"](Control_Monad_Eff.functorEff)(Data_StrMap_ST.poke(s)(k)(v));
+        });
+    };
+};
+var functorStrMap = new Data_Functor.Functor(function (f) {
+    return function (m) {
+        return $foreign._fmapStrMap(m, f);
+    };
+});
+var fromFoldableWith = function (dictFoldable) {
+    return function (f) {
+        return function (l) {
+            return pureST(function __do() {
+                var v = Data_StrMap_ST["new"]();
+                Data_Foldable.for_(Control_Monad_Eff.applicativeEff)(dictFoldable)(l)(function (v1) {
+                    return Control_Bind.bind(Control_Monad_Eff.bindEff)($foreign._lookupST(v1.value1, f(v1.value1), v1.value0, v))(Data_StrMap_ST.poke(v)(v1.value0));
+                })();
+                return v;
+            });
+        };
+    };
+};
+var fromFoldable = function (dictFoldable) {
+    return function (l) {
+        return pureST(function __do() {
+            var v = Data_StrMap_ST["new"]();
+            Control_Monad_Eff.foreachE(Data_Array.fromFoldable(dictFoldable)(l))(function (v1) {
+                return Data_Functor["void"](Control_Monad_Eff.functorEff)(Data_StrMap_ST.poke(v)(v1.value0)(v1.value1));
+            })();
+            return v;
+        });
+    };
+};
+var freezeST = $foreign._copyEff;
+var foldMaybe = function (f) {
+    return function (z) {
+        return function (m) {
+            return $foreign._foldSCStrMap(m, z, f, Data_Maybe.fromMaybe);
+        };
+    };
+};
+var foldM = function (dictMonad) {
+    return function (f) {
+        return function (z) {
+            return $foreign._foldM(Control_Bind.bind(dictMonad.Bind1()))(f)(Control_Applicative.pure(dictMonad.Applicative0())(z));
+        };
+    };
+};
+var semigroupStrMap = function (dictSemigroup) {
+    return new Data_Semigroup.Semigroup(function (m1) {
+        return function (m2) {
+            return mutate(function (s1) {
+                return Data_Functor["void"](Control_Monad_Eff.functorEff)(foldM(Control_Monad_Eff.monadEff)(function (s2) {
+                    return function (k) {
+                        return function (v2) {
+                            return Data_StrMap_ST.poke(s2)(k)($foreign._lookup(v2, function (v1) {
+                                return Data_Semigroup.append(dictSemigroup)(v1)(v2);
+                            }, k, m2));
+                        };
+                    };
+                })(s1)(m1));
+            })(m2);
+        };
+    });
+};
+var monoidStrMap = function (dictSemigroup) {
+    return new Data_Monoid.Monoid(function () {
+        return semigroupStrMap(dictSemigroup);
+    }, $foreign.empty);
+};
+var union = function (m) {
+    return mutate(function (s) {
+        return Data_Functor["void"](Control_Monad_Eff.functorEff)(foldM(Control_Monad_Eff.monadEff)(Data_StrMap_ST.poke)(s)(m));
+    });
+};
+var unions = function (dictFoldable) {
+    return Data_Foldable.foldl(dictFoldable)(union)($foreign.empty);
+};
+var fold = $foreign._foldM(Data_Function.applyFlipped);
+var foldMap = function (dictMonoid) {
+    return function (f) {
+        return fold(function (acc) {
+            return function (k) {
+                return function (v) {
+                    return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f(k)(v));
+                };
+            };
+        })(Data_Monoid.mempty(dictMonoid));
+    };
+};
+var foldableStrMap = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return foldMap(dictMonoid)(Data_Function["const"](f));
+    };
+}, function (f) {
+    return fold(function (z) {
+        return function (v) {
+            return f(z);
+        };
+    });
+}, function (f) {
+    return function (z) {
+        return function (m) {
+            return Data_Foldable.foldr(Data_Foldable.foldableArray)(f)(z)(values(m));
+        };
+    };
+});
+var traversableStrMap = new Data_Traversable.Traversable(function () {
+    return foldableStrMap;
+}, function () {
+    return functorStrMap;
+}, function (dictApplicative) {
+    return Data_Traversable.traverse(traversableStrMap)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
+}, function (dictApplicative) {
+    return function (f) {
+        return function (ms) {
+            return fold(function (acc) {
+                return function (k) {
+                    return function (v) {
+                        return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(insert(k))(f(v)))(acc);
+                    };
+                };
+            })(Control_Applicative.pure(dictApplicative)($foreign.empty))(ms);
+        };
+    };
+});
+var filterWithKey = function (predicate) {
+    return function (m) {
+        var go = (function () {
+            var step = function (acc) {
+                return function (k) {
+                    return function (v) {
+                        var $40 = predicate(k)(v);
+                        if ($40) {
+                            return Data_StrMap_ST.poke(acc)(k)(v);
+                        };
+                        return Control_Applicative.pure(Control_Monad_Eff.applicativeEff)(acc);
+                    };
+                };
+            };
+            return function __do() {
+                var v = Data_StrMap_ST["new"]();
+                return foldM(Control_Monad_Eff.monadEff)(step)(v)(m)();
+            };
+        })();
+        return pureST(go);
+    };
+};
+var filterKeys = function (predicate) {
+    return filterWithKey(function ($46) {
+        return Data_Function["const"](predicate($46));
+    });
+};
+var filter = function (predicate) {
+    return filterWithKey(Data_Function["const"](predicate));
+};
+var eqStrMap = function (dictEq) {
+    return new Data_Eq.Eq(function (m1) {
+        return function (m2) {
+            return isSubmap(dictEq)(m1)(m2) && isSubmap(dictEq)(m2)(m1);
+        };
+    });
+};
+var ordStrMap = function (dictOrd) {
+    return new Data_Ord.Ord(function () {
+        return eqStrMap(dictOrd.Eq0());
+    }, function (m1) {
+        return function (m2) {
+            return Data_Ord.compare(Data_Ord.ordArray(Data_Tuple.ordTuple(Data_Ord.ordString)(dictOrd)))(toAscArray(m1))(toAscArray(m2));
+        };
+    });
+};
+var eq1StrMap = new Data_Eq.Eq1(function (dictEq) {
+    return Data_Eq.eq(eqStrMap(dictEq));
+});
+var $$delete = function (k) {
+    return mutate(function (s) {
+        return Data_Functor["void"](Control_Monad_Eff.functorEff)(Data_StrMap_ST["delete"](s)(k));
+    });
+};
+var pop = function (k) {
+    return function (m) {
+        return Data_Functor.mapFlipped(Data_Maybe.functorMaybe)(lookup(k)(m))(function (a) {
+            return new Data_Tuple.Tuple(a, $$delete(k)(m));
+        });
+    };
+};
+var alter = function (f) {
+    return function (k) {
+        return function (m) {
+            var v = f(lookup(k)(m));
+            if (v instanceof Data_Maybe.Nothing) {
+                return $$delete(k)(m);
+            };
+            if (v instanceof Data_Maybe.Just) {
+                return insert(k)(v.value0)(m);
+            };
+            throw new Error("Failed pattern match at Data.StrMap line 198, column 15 - line 200, column 25: " + [ v.constructor.name ]);
+        };
+    };
+};
+var update = function (f) {
+    return function (k) {
+        return function (m) {
+            return alter(Data_Maybe.maybe(Data_Maybe.Nothing.value)(f))(k)(m);
+        };
+    };
+};
+module.exports = {
+    alter: alter, 
+    "delete": $$delete, 
+    filter: filter, 
+    filterKeys: filterKeys, 
+    filterWithKey: filterWithKey, 
+    fold: fold, 
+    foldM: foldM, 
+    foldMap: foldMap, 
+    foldMaybe: foldMaybe, 
+    freezeST: freezeST, 
+    fromFoldable: fromFoldable, 
+    fromFoldableWith: fromFoldableWith, 
+    insert: insert, 
+    isEmpty: isEmpty, 
+    isSubmap: isSubmap, 
+    lookup: lookup, 
+    mapWithKey: mapWithKey, 
+    member: member, 
+    pop: pop, 
+    pureST: pureST, 
+    singleton: singleton, 
+    thawST: thawST, 
+    toAscUnfoldable: toAscUnfoldable, 
+    toUnfoldable: toUnfoldable, 
+    union: union, 
+    unions: unions, 
+    update: update, 
+    values: values, 
+    functorStrMap: functorStrMap, 
+    foldableStrMap: foldableStrMap, 
+    traversableStrMap: traversableStrMap, 
+    eqStrMap: eqStrMap, 
+    eq1StrMap: eq1StrMap, 
+    ordStrMap: ordStrMap, 
+    showStrMap: showStrMap, 
+    semigroupStrMap: semigroupStrMap, 
+    monoidStrMap: monoidStrMap, 
+    all: $foreign.all, 
+    empty: $foreign.empty, 
+    keys: $foreign.keys, 
+    runST: $foreign.runST, 
+    size: $foreign.size, 
+    toArrayWithKey: $foreign.toArrayWithKey
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad.Eff":71,"../Control.Monad.ST":80,"../Control.Semigroupoid":93,"../Data.Array":120,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Monoid":213,"../Data.Ord":222,"../Data.Semigroup":237,"../Data.Show":241,"../Data.StrMap.ST":243,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unfoldable":257,"../Prelude":278,"./foreign":244}],246:[function(require,module,exports){
+"use strict";
+
+exports.charCodeAt = function (i) {
+  return function (s) {
+    if (i >= 0 && i < s.length) return s.charCodeAt(i);
+    throw new Error("Data.String.Unsafe.charCodeAt: Invalid index.");
+  };
+};
+
+exports.charAt = function (i) {
+  return function (s) {
+    if (i >= 0 && i < s.length) return s.charAt(i);
+    throw new Error("Data.String.Unsafe.charAt: Invalid index.");
+  };
+};
+
+exports.char = function (s) {
+  if (s.length === 1) return s.charAt(0);
+  throw new Error("Data.String.Unsafe.char: Expected string of length 1.");
+};
+
+},{}],247:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+module.exports = {
+    "char": $foreign["char"], 
+    charAt: $foreign.charAt, 
+    charCodeAt: $foreign.charCodeAt
+};
+
+},{"./foreign":246}],248:[function(require,module,exports){
+"use strict";
+
+exports._charAt = function (just) {
+  return function (nothing) {
+    return function (i) {
+      return function (s) {
+        return i >= 0 && i < s.length ? just(s.charAt(i)) : nothing;
+      };
+    };
+  };
+};
+
+exports.singleton = function (c) {
+  return c;
+};
+
+exports._charCodeAt = function (just) {
+  return function (nothing) {
+    return function (i) {
+      return function (s) {
+        return i >= 0 && i < s.length ? just(s.charCodeAt(i)) : nothing;
+      };
+    };
+  };
+};
+
+exports._toChar = function (just) {
+  return function (nothing) {
+    return function (s) {
+      return s.length === 1 ? just(s) : nothing;
+    };
+  };
+};
+
+exports.fromCharArray = function (a) {
+  return a.join("");
+};
+
+exports._indexOf = function (just) {
+  return function (nothing) {
+    return function (x) {
+      return function (s) {
+        var i = s.indexOf(x);
+        return i === -1 ? nothing : just(i);
+      };
+    };
+  };
+};
+
+exports["_indexOf'"] = function (just) {
+  return function (nothing) {
+    return function (x) {
+      return function (startAt) {
+        return function (s) {
+          if (startAt < 0 || startAt > s.length) return nothing;
+          var i = s.indexOf(x, startAt);
+          return i === -1 ? nothing : just(i);
+        };
+      };
+    };
+  };
+};
+
+exports._lastIndexOf = function (just) {
+  return function (nothing) {
+    return function (x) {
+      return function (s) {
+        var i = s.lastIndexOf(x);
+        return i === -1 ? nothing : just(i);
+      };
+    };
+  };
+};
+
+exports["_lastIndexOf'"] = function (just) {
+  return function (nothing) {
+    return function (x) {
+      return function (startAt) {
+        return function (s) {
+          if (startAt < 0 || startAt > s.length) return nothing;
+          var i = s.lastIndexOf(x, startAt);
+          return i === -1 ? nothing : just(i);
+        };
+      };
+    };
+  };
+};
+
+exports.length = function (s) {
+  return s.length;
+};
+
+exports._localeCompare = function (lt) {
+  return function (eq) {
+    return function (gt) {
+      return function (s1) {
+        return function (s2) {
+          var result = s1.localeCompare(s2);
+          return result < 0 ? lt : result > 0 ? gt : eq;
+        };
+      };
+    };
+  };
+};
+
+exports.replace = function (s1) {
+  return function (s2) {
+    return function (s3) {
+      return s3.replace(s1, s2);
+    };
+  };
+};
+
+exports.replaceAll = function (s1) {
+  return function (s2) {
+    return function (s3) {
+      return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2);
+    };
+  };
+};
+
+exports.take = function (n) {
+  return function (s) {
+    return s.substr(0, n);
+  };
+};
+
+exports.drop = function (n) {
+  return function (s) {
+    return s.substring(n);
+  };
+};
+
+exports.count = function (p) {
+  return function (s) {
+    var i = 0;
+    while (i < s.length && p(s.charAt(i))) i++;
+    return i;
+  };
+};
+
+exports.split = function (sep) {
+  return function (s) {
+    return s.split(sep);
+  };
+};
+
+exports._splitAt = function (just) {
+  return function (nothing) {
+    return function (i) {
+      return function (s) {
+        return i >= 0 && i < s.length ?
+               just({ before: s.substring(0, i), after: s.substring(i) }) :
+               nothing;
+      };
+    };
+  };
+};
+
+exports.toCharArray = function (s) {
+  return s.split("");
+};
+
+exports.toLower = function (s) {
+  return s.toLowerCase();
+};
+
+exports.toUpper = function (s) {
+  return s.toUpperCase();
+};
+
+exports.trim = function (s) {
+  return s.trim();
+};
+
+exports.joinWith = function (s) {
+  return function (xs) {
+    return xs.join(s);
+  };
+};
+
+},{}],249:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_Function = require("../Data.Function");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_String_Unsafe = require("../Data.String.Unsafe");
+var Prelude = require("../Prelude");
+var Replacement = function (x) {
+    return x;
+};
+var Pattern = function (x) {
+    return x;
+};
+var uncons = function (v) {
+    if (v === "") {
+        return Data_Maybe.Nothing.value;
+    };
+    return new Data_Maybe.Just({
+        head: Data_String_Unsafe.charAt(0)(v), 
+        tail: $foreign.drop(1)(v)
+    });
+};
+var toChar = $foreign._toChar(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var takeWhile = function (p) {
+    return function (s) {
+        return $foreign.take($foreign.count(p)(s))(s);
+    };
+};
+var splitAt = $foreign._splitAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var showReplacement = new Data_Show.Show(function (v) {
+    return "(Replacement " + (v + ")");
+});
+var showPattern = new Data_Show.Show(function (v) {
+    return "(Pattern " + (v + ")");
+});
+var $$null = function (s) {
+    return s === "";
+};
+var newtypeReplacement = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Replacement);
+var newtypePattern = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Pattern);
+var localeCompare = $foreign._localeCompare(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value);
+var lastIndexOf$prime = $foreign["_lastIndexOf'"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var lastIndexOf = $foreign._lastIndexOf(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var stripSuffix = function (v) {
+    return function (str) {
+        var v1 = lastIndexOf(v)(str);
+        if (v1 instanceof Data_Maybe.Just && v1.value0 === ($foreign.length(str) - $foreign.length(v) | 0)) {
+            return Data_Maybe.Just.create($foreign.take(v1.value0)(str));
+        };
+        return Data_Maybe.Nothing.value;
+    };
+};
+var indexOf$prime = $foreign["_indexOf'"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var indexOf = $foreign._indexOf(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var stripPrefix = function (v) {
+    return function (str) {
+        var v1 = indexOf(v)(str);
+        if (v1 instanceof Data_Maybe.Just && v1.value0 === 0) {
+            return Data_Maybe.Just.create($foreign.drop($foreign.length(v))(str));
+        };
+        return Data_Maybe.Nothing.value;
+    };
+};
+var eqReplacement = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        return x === y;
+    };
+});
+var ordReplacement = new Data_Ord.Ord(function () {
+    return eqReplacement;
+}, function (x) {
+    return function (y) {
+        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
+    };
+});
+var eqPattern = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        return x === y;
+    };
+});
+var ordPattern = new Data_Ord.Ord(function () {
+    return eqPattern;
+}, function (x) {
+    return function (y) {
+        return Data_Ord.compare(Data_Ord.ordString)(x)(y);
+    };
+});
+var dropWhile = function (p) {
+    return function (s) {
+        return $foreign.drop($foreign.count(p)(s))(s);
+    };
+};
+var contains = function (pat) {
+    return function ($48) {
+        return Data_Maybe.isJust(indexOf(pat)($48));
+    };
+};
+var charCodeAt = $foreign._charCodeAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+var charAt = $foreign._charAt(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+module.exports = {
+    Pattern: Pattern, 
+    Replacement: Replacement, 
+    charAt: charAt, 
+    charCodeAt: charCodeAt, 
+    contains: contains, 
+    dropWhile: dropWhile, 
+    indexOf: indexOf, 
+    "indexOf'": indexOf$prime, 
+    lastIndexOf: lastIndexOf, 
+    "lastIndexOf'": lastIndexOf$prime, 
+    localeCompare: localeCompare, 
+    "null": $$null, 
+    splitAt: splitAt, 
+    stripPrefix: stripPrefix, 
+    stripSuffix: stripSuffix, 
+    takeWhile: takeWhile, 
+    toChar: toChar, 
+    uncons: uncons, 
+    eqPattern: eqPattern, 
+    ordPattern: ordPattern, 
+    newtypePattern: newtypePattern, 
+    showPattern: showPattern, 
+    eqReplacement: eqReplacement, 
+    ordReplacement: ordReplacement, 
+    newtypeReplacement: newtypeReplacement, 
+    showReplacement: showReplacement, 
+    count: $foreign.count, 
+    drop: $foreign.drop, 
+    fromCharArray: $foreign.fromCharArray, 
+    joinWith: $foreign.joinWith, 
+    length: $foreign.length, 
+    replace: $foreign.replace, 
+    replaceAll: $foreign.replaceAll, 
+    singleton: $foreign.singleton, 
+    split: $foreign.split, 
+    take: $foreign.take, 
+    toCharArray: $foreign.toCharArray, 
+    toLower: $foreign.toLower, 
+    toUpper: $foreign.toUpper, 
+    trim: $foreign.trim
+};
+
+},{"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.Function":151,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.String.Unsafe":247,"../Prelude":278,"./foreign":248}],250:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Eq = require("../Data.Eq");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Generic = require("../Data.Generic");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Seconds = function (x) {
+    return x;
+};
+var Minutes = function (x) {
+    return x;
+};
+var Milliseconds = function (x) {
+    return x;
+};
+var Hours = function (x) {
+    return x;
+};
+var Days = function (x) {
+    return x;
+};
+var Duration = function (fromDuration, toDuration) {
+    this.fromDuration = fromDuration;
+    this.toDuration = toDuration;
+};
+var toDuration = function (dict) {
+    return dict.toDuration;
+};
+var showSeconds = new Data_Show.Show(function (v) {
+    return "(Seconds " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
+});
+var showMinutes = new Data_Show.Show(function (v) {
+    return "(Minutes " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
+});
+var showMilliseconds = new Data_Show.Show(function (v) {
+    return "(Milliseconds " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
+});
+var showHours = new Data_Show.Show(function (v) {
+    return "(Hours " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
+});
+var showDays = new Data_Show.Show(function (v) {
+    return "(Days " + (Data_Show.show(Data_Show.showNumber)(v) + ")");
+});
+var semiringSeconds = Data_Semiring.semiringNumber;
+var semiringMinutes = Data_Semiring.semiringNumber;
+var semiringMilliseconds = Data_Semiring.semiringNumber;
+var semiringHours = Data_Semiring.semiringNumber;
+var semiringDays = Data_Semiring.semiringNumber;
+var ringSeconds = Data_Ring.ringNumber;
+var ringMinutes = Data_Ring.ringNumber;
+var ringMilliseconds = Data_Ring.ringNumber;
+var ringHours = Data_Ring.ringNumber;
+var ringDays = Data_Ring.ringNumber;
+var ordSeconds = Data_Ord.ordNumber;
+var ordMinutes = Data_Ord.ordNumber;
+var ordMilliseconds = Data_Ord.ordNumber;
+var ordHours = Data_Ord.ordNumber;
+var ordDays = Data_Ord.ordNumber;
+var newtypeSeconds = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Seconds);
+var newtypeMinutes = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Minutes);
+var newtypeMilliseconds = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Milliseconds);
+var newtypeHours = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Hours);
+var newtypeDays = new Data_Newtype.Newtype(function (n) {
+    return n;
+}, Days);
+var genericSeconds = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Seconds" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Seconds))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.Time.Duration.Seconds", [ {
+        sigConstructor: "Data.Time.Duration.Seconds", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.Time.Duration.Seconds", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
+    } ]);
+});
+var genericMinutes = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Minutes" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Minutes))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.Time.Duration.Minutes", [ {
+        sigConstructor: "Data.Time.Duration.Minutes", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.Time.Duration.Minutes", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
+    } ]);
+});
+var genericMilliseconds = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Milliseconds" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Milliseconds))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.Time.Duration.Milliseconds", [ {
+        sigConstructor: "Data.Time.Duration.Milliseconds", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.Time.Duration.Milliseconds", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
+    } ]);
+});
+var genericHours = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Hours" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Hours))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.Time.Duration.Hours", [ {
+        sigConstructor: "Data.Time.Duration.Hours", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.Time.Duration.Hours", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
+    } ]);
+});
+var genericDays = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Data.Time.Duration.Days" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(Days))(Data_Generic.fromSpine(Data_Generic.genericNumber)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Data.Time.Duration.Days", [ {
+        sigConstructor: "Data.Time.Duration.Days", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericNumber)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Data.Time.Duration.Days", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericNumber)(v);
+    } ]);
+});
+var fromDuration = function (dict) {
+    return dict.fromDuration;
+};
+var eqSeconds = Data_Eq.eqNumber;
+var eqMinutes = Data_Eq.eqNumber;
+var eqMilliseconds = Data_Eq.eqNumber;
+var eqHours = Data_Eq.eqNumber;
+var eqDays = Data_Eq.eqNumber;
+var durationSeconds = new Duration(Data_Newtype.over(newtypeSeconds)(newtypeMilliseconds)(Seconds)(function (v) {
+    return v * 1000.0;
+}), Data_Newtype.over(newtypeMilliseconds)(newtypeSeconds)(Milliseconds)(function (v) {
+    return v / 1000.0;
+}));
+var durationMinutes = new Duration(Data_Newtype.over(newtypeMinutes)(newtypeMilliseconds)(Minutes)(function (v) {
+    return v * 60000.0;
+}), Data_Newtype.over(newtypeMilliseconds)(newtypeMinutes)(Milliseconds)(function (v) {
+    return v / 60000.0;
+}));
+var durationMilliseconds = new Duration(Control_Category.id(Control_Category.categoryFn), Control_Category.id(Control_Category.categoryFn));
+var durationHours = new Duration(Data_Newtype.over(newtypeHours)(newtypeMilliseconds)(Hours)(function (v) {
+    return v * 3600000.0;
+}), Data_Newtype.over(newtypeMilliseconds)(newtypeHours)(Milliseconds)(function (v) {
+    return v / 3600000.0;
+}));
+var durationDays = new Duration(Data_Newtype.over(newtypeDays)(newtypeMilliseconds)(Days)(function (v) {
+    return v * 8.64e7;
+}), Data_Newtype.over(newtypeMilliseconds)(newtypeDays)(Milliseconds)(function (v) {
+    return v / 8.64e7;
+}));
+var convertDuration = function (dictDuration) {
+    return function (dictDuration1) {
+        return function ($80) {
+            return toDuration(dictDuration1)(fromDuration(dictDuration)($80));
+        };
+    };
+};
+module.exports = {
+    Days: Days, 
+    Hours: Hours, 
+    Milliseconds: Milliseconds, 
+    Minutes: Minutes, 
+    Seconds: Seconds, 
+    Duration: Duration, 
+    convertDuration: convertDuration, 
+    fromDuration: fromDuration, 
+    toDuration: toDuration, 
+    newtypeMilliseconds: newtypeMilliseconds, 
+    genericMilliseconds: genericMilliseconds, 
+    eqMilliseconds: eqMilliseconds, 
+    ordMilliseconds: ordMilliseconds, 
+    semiringMilliseconds: semiringMilliseconds, 
+    ringMilliseconds: ringMilliseconds, 
+    showMilliseconds: showMilliseconds, 
+    newtypeSeconds: newtypeSeconds, 
+    genericSeconds: genericSeconds, 
+    eqSeconds: eqSeconds, 
+    ordSeconds: ordSeconds, 
+    semiringSeconds: semiringSeconds, 
+    ringSeconds: ringSeconds, 
+    showSeconds: showSeconds, 
+    newtypeMinutes: newtypeMinutes, 
+    genericMinutes: genericMinutes, 
+    eqMinutes: eqMinutes, 
+    ordMinutes: ordMinutes, 
+    semiringMinutes: semiringMinutes, 
+    ringMinutes: ringMinutes, 
+    showMinutes: showMinutes, 
+    newtypeHours: newtypeHours, 
+    genericHours: genericHours, 
+    eqHours: eqHours, 
+    ordHours: ordHours, 
+    semiringHours: semiringHours, 
+    ringHours: ringHours, 
+    showHours: showHours, 
+    newtypeDays: newtypeDays, 
+    genericDays: genericDays, 
+    eqDays: eqDays, 
+    ordDays: ordDays, 
+    semiringDays: semiringDays, 
+    ringDays: ringDays, 
+    showDays: showDays, 
+    durationMilliseconds: durationMilliseconds, 
+    durationSeconds: durationSeconds, 
+    durationMinutes: durationMinutes, 
+    durationHours: durationHours, 
+    durationDays: durationDays
+};
+
+},{"../Control.Apply":42,"../Control.Category":47,"../Control.Semigroupoid":93,"../Data.Eq":140,"../Data.EuclideanRing":142,"../Data.Generic":159,"../Data.Maybe":204,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Unit":259,"../Prelude":278}],251:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Data_Functor = require("../Data.Functor");
+var Data_Traversable_Accum = require("../Data.Traversable.Accum");
+var Prelude = require("../Prelude");
+var StateR = function (x) {
+    return x;
+};
+var StateL = function (x) {
+    return x;
+};
+var stateR = function (v) {
+    return v;
+};
+var stateL = function (v) {
+    return v;
+};
+var functorStateR = new Data_Functor.Functor(function (f) {
+    return function (k) {
+        return function (s) {
+            var v = stateR(k)(s);
+            return {
+                accum: v.accum, 
+                value: f(v.value)
+            };
+        };
+    };
+});
+var functorStateL = new Data_Functor.Functor(function (f) {
+    return function (k) {
+        return function (s) {
+            var v = stateL(k)(s);
+            return {
+                accum: v.accum, 
+                value: f(v.value)
+            };
+        };
+    };
+});
+var applyStateR = new Control_Apply.Apply(function () {
+    return functorStateR;
+}, function (f) {
+    return function (x) {
+        return function (s) {
+            var v = stateR(x)(s);
+            var v1 = stateR(f)(v.accum);
+            return {
+                accum: v1.accum, 
+                value: v1.value(v.value)
+            };
+        };
+    };
+});
+var applyStateL = new Control_Apply.Apply(function () {
+    return functorStateL;
+}, function (f) {
+    return function (x) {
+        return function (s) {
+            var v = stateL(f)(s);
+            var v1 = stateL(x)(v.accum);
+            return {
+                accum: v1.accum, 
+                value: v.value(v1.value)
+            };
+        };
+    };
+});
+var applicativeStateR = new Control_Applicative.Applicative(function () {
+    return applyStateR;
+}, function (a) {
+    return function (s) {
+        return {
+            accum: s, 
+            value: a
+        };
+    };
+});
+var applicativeStateL = new Control_Applicative.Applicative(function () {
+    return applyStateL;
+}, function (a) {
+    return function (s) {
+        return {
+            accum: s, 
+            value: a
+        };
+    };
+});
+module.exports = {
+    StateL: StateL, 
+    StateR: StateR, 
+    stateL: stateL, 
+    stateR: stateR, 
+    functorStateL: functorStateL, 
+    applyStateL: applyStateL, 
+    applicativeStateL: applicativeStateL, 
+    functorStateR: functorStateR, 
+    applyStateR: applyStateR, 
+    applicativeStateR: applicativeStateR
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Data.Functor":157,"../Data.Traversable.Accum":252,"../Prelude":278}],252:[function(require,module,exports){
+arguments[4][100][0].apply(exports,arguments)
+},{"dup":100}],253:[function(require,module,exports){
+"use strict";
+
+// jshint maxparams: 3
+
+exports.traverseArrayImpl = function () {
+  function Cont(fn) {
+    this.fn = fn;
+  }
+
+  var emptyList = {};
+
+  var ConsCell = function (head, tail) {
+    this.head = head;
+    this.tail = tail;
+  };
+
+  function consList(x) {
+    return function (xs) {
+      return new ConsCell(x, xs);
+    };
+  }
+
+  function listToArray(list) {
+    var arr = [];
+    var xs = list;
+    while (xs !== emptyList) {
+      arr.push(xs.head);
+      xs = xs.tail;
+    }
+    return arr;
+  }
+
+  return function (apply) {
+    return function (map) {
+      return function (pure) {
+        return function (f) {
+          var buildFrom = function (x, ys) {
+            return apply(map(consList)(f(x)))(ys);
+          };
+
+          var go = function (acc, currentLen, xs) {
+            if (currentLen === 0) {
+              return acc;
+            } else {
+              var last = xs[currentLen - 1];
+              return new Cont(function () {
+                return go(buildFrom(last, acc), currentLen - 1, xs);
+              });
+            }
+          };
+
+          return function (array) {
+            var result = go(pure(emptyList), array.length, array);
+            while (result instanceof Cont) {
+              result = result.fn();
+            }
+
+            return map(listToArray)(result);
+          };
+        };
+      };
+    };
+  };
+}();
+
+},{}],254:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Category = require("../Control.Category");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Maybe_First = require("../Data.Maybe.First");
+var Data_Maybe_Last = require("../Data.Maybe.Last");
+var Data_Monoid_Additive = require("../Data.Monoid.Additive");
+var Data_Monoid_Conj = require("../Data.Monoid.Conj");
+var Data_Monoid_Disj = require("../Data.Monoid.Disj");
+var Data_Monoid_Dual = require("../Data.Monoid.Dual");
+var Data_Monoid_Multiplicative = require("../Data.Monoid.Multiplicative");
+var Data_Traversable_Accum = require("../Data.Traversable.Accum");
+var Data_Traversable_Accum_Internal = require("../Data.Traversable.Accum.Internal");
+var Prelude = require("../Prelude");
+var Traversable = function (Foldable1, Functor0, sequence, traverse) {
+    this.Foldable1 = Foldable1;
+    this.Functor0 = Functor0;
+    this.sequence = sequence;
+    this.traverse = traverse;
+};
+var traverse = function (dict) {
+    return dict.traverse;
+};
+var traversableMultiplicative = new Traversable(function () {
+    return Data_Foldable.foldableMultiplicative;
+}, function () {
+    return Data_Monoid_Multiplicative.functorMultiplicative;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Multiplicative.Multiplicative)(v);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Multiplicative.Multiplicative)(f(v));
+        };
+    };
+});
+var traversableMaybe = new Traversable(function () {
+    return Data_Foldable.foldableMaybe;
+}, function () {
+    return Data_Maybe.functorMaybe;
+}, function (dictApplicative) {
+    return function (v) {
+        if (v instanceof Data_Maybe.Nothing) {
+            return Control_Applicative.pure(dictApplicative)(Data_Maybe.Nothing.value);
+        };
+        if (v instanceof Data_Maybe.Just) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe.Just.create)(v.value0);
+        };
+        throw new Error("Failed pattern match at Data.Traversable line 89, column 3 - line 89, column 35: " + [ v.constructor.name ]);
+    };
+}, function (dictApplicative) {
+    return function (v) {
+        return function (v1) {
+            if (v1 instanceof Data_Maybe.Nothing) {
+                return Control_Applicative.pure(dictApplicative)(Data_Maybe.Nothing.value);
+            };
+            if (v1 instanceof Data_Maybe.Just) {
+                return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe.Just.create)(v(v1.value0));
+            };
+            throw new Error("Failed pattern match at Data.Traversable line 87, column 3 - line 87, column 37: " + [ v.constructor.name, v1.constructor.name ]);
+        };
+    };
+});
+var traversableDual = new Traversable(function () {
+    return Data_Foldable.foldableDual;
+}, function () {
+    return Data_Monoid_Dual.functorDual;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Dual.Dual)(v);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Dual.Dual)(f(v));
+        };
+    };
+});
+var traversableDisj = new Traversable(function () {
+    return Data_Foldable.foldableDisj;
+}, function () {
+    return Data_Monoid_Disj.functorDisj;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Disj.Disj)(v);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Disj.Disj)(f(v));
+        };
+    };
+});
+var traversableConj = new Traversable(function () {
+    return Data_Foldable.foldableConj;
+}, function () {
+    return Data_Monoid_Conj.functorConj;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Conj.Conj)(v);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Conj.Conj)(f(v));
+        };
+    };
+});
+var traversableAdditive = new Traversable(function () {
+    return Data_Foldable.foldableAdditive;
+}, function () {
+    return Data_Monoid_Additive.functorAdditive;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Additive.Additive)(v);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Monoid_Additive.Additive)(f(v));
+        };
+    };
+});
+var sequenceDefault = function (dictTraversable) {
+    return function (dictApplicative) {
+        return traverse(dictTraversable)(dictApplicative)(Control_Category.id(Control_Category.categoryFn));
+    };
+};
+var traversableArray = new Traversable(function () {
+    return Data_Foldable.foldableArray;
+}, function () {
+    return Data_Functor.functorArray;
+}, function (dictApplicative) {
+    return sequenceDefault(traversableArray)(dictApplicative);
+}, function (dictApplicative) {
+    return $foreign.traverseArrayImpl(Control_Apply.apply(dictApplicative.Apply0()))(Data_Functor.map((dictApplicative.Apply0()).Functor0()))(Control_Applicative.pure(dictApplicative));
+});
+var sequence = function (dict) {
+    return dict.sequence;
+};
+var traversableFirst = new Traversable(function () {
+    return Data_Foldable.foldableFirst;
+}, function () {
+    return Data_Maybe_First.functorFirst;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_First.First)(sequence(traversableMaybe)(dictApplicative)(v));
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_First.First)(traverse(traversableMaybe)(dictApplicative)(f)(v));
+        };
+    };
+});
+var traversableLast = new Traversable(function () {
+    return Data_Foldable.foldableLast;
+}, function () {
+    return Data_Maybe_Last.functorLast;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_Last.Last)(sequence(traversableMaybe)(dictApplicative)(v));
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Maybe_Last.Last)(traverse(traversableMaybe)(dictApplicative)(f)(v));
+        };
+    };
+});
+var traverseDefault = function (dictTraversable) {
+    return function (dictApplicative) {
+        return function (f) {
+            return function (ta) {
+                return sequence(dictTraversable)(dictApplicative)(Data_Functor.map(dictTraversable.Functor0())(f)(ta));
+            };
+        };
+    };
+};
+var mapAccumR = function (dictTraversable) {
+    return function (f) {
+        return function (s0) {
+            return function (xs) {
+                return Data_Traversable_Accum_Internal.stateR(traverse(dictTraversable)(Data_Traversable_Accum_Internal.applicativeStateR)(function (a) {
+                    return function (s) {
+                        return f(s)(a);
+                    };
+                })(xs))(s0);
+            };
+        };
+    };
+};
+var scanr = function (dictTraversable) {
+    return function (f) {
+        return function (b0) {
+            return function (xs) {
+                return (mapAccumR(dictTraversable)(function (b) {
+                    return function (a) {
+                        var b$prime = f(a)(b);
+                        return {
+                            accum: b$prime, 
+                            value: b$prime
+                        };
+                    };
+                })(b0)(xs)).value;
+            };
+        };
+    };
+};
+var mapAccumL = function (dictTraversable) {
+    return function (f) {
+        return function (s0) {
+            return function (xs) {
+                return Data_Traversable_Accum_Internal.stateL(traverse(dictTraversable)(Data_Traversable_Accum_Internal.applicativeStateL)(function (a) {
+                    return function (s) {
+                        return f(s)(a);
+                    };
+                })(xs))(s0);
+            };
+        };
+    };
+};
+var scanl = function (dictTraversable) {
+    return function (f) {
+        return function (b0) {
+            return function (xs) {
+                return (mapAccumL(dictTraversable)(function (b) {
+                    return function (a) {
+                        var b$prime = f(b)(a);
+                        return {
+                            accum: b$prime, 
+                            value: b$prime
+                        };
+                    };
+                })(b0)(xs)).value;
+            };
+        };
+    };
+};
+var $$for = function (dictApplicative) {
+    return function (dictTraversable) {
+        return function (x) {
+            return function (f) {
+                return traverse(dictTraversable)(dictApplicative)(f)(x);
+            };
+        };
+    };
+};
+module.exports = {
+    Traversable: Traversable, 
+    "for": $$for, 
+    mapAccumL: mapAccumL, 
+    mapAccumR: mapAccumR, 
+    scanl: scanl, 
+    scanr: scanr, 
+    sequence: sequence, 
+    sequenceDefault: sequenceDefault, 
+    traverse: traverse, 
+    traverseDefault: traverseDefault, 
+    traversableArray: traversableArray, 
+    traversableMaybe: traversableMaybe, 
+    traversableFirst: traversableFirst, 
+    traversableLast: traversableLast, 
+    traversableAdditive: traversableAdditive, 
+    traversableDual: traversableDual, 
+    traversableConj: traversableConj, 
+    traversableDisj: traversableDisj, 
+    traversableMultiplicative: traversableMultiplicative
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Category":47,"../Data.Foldable":145,"../Data.Functor":157,"../Data.Maybe":204,"../Data.Maybe.First":202,"../Data.Maybe.Last":203,"../Data.Monoid.Additive":207,"../Data.Monoid.Conj":208,"../Data.Monoid.Disj":209,"../Data.Monoid.Dual":210,"../Data.Monoid.Multiplicative":212,"../Data.Traversable.Accum":252,"../Data.Traversable.Accum.Internal":251,"../Prelude":278,"./foreign":253}],255:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Biapplicative = require("../Control.Biapplicative");
+var Control_Biapply = require("../Control.Biapply");
+var Control_Bind = require("../Control.Bind");
+var Control_Comonad = require("../Control.Comonad");
+var Control_Extend = require("../Control.Extend");
+var Control_Lazy = require("../Control.Lazy");
+var Control_Monad = require("../Control.Monad");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Bifoldable = require("../Data.Bifoldable");
+var Data_Bifunctor = require("../Data.Bifunctor");
+var Data_Bitraversable = require("../Data.Bitraversable");
+var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
+var Data_Bounded = require("../Data.Bounded");
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_Distributive = require("../Data.Distributive");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Functor_Invariant = require("../Data.Functor.Invariant");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Maybe_First = require("../Data.Maybe.First");
+var Data_Monoid = require("../Data.Monoid");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Type_Equality = require("../Type.Equality");
+var Tuple = (function () {
+    function Tuple(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    Tuple.create = function (value0) {
+        return function (value1) {
+            return new Tuple(value0, value1);
+        };
+    };
+    return Tuple;
+})();
+var uncurry = function (f) {
+    return function (v) {
+        return f(v.value0)(v.value1);
+    };
+};
+var swap = function (v) {
+    return new Tuple(v.value1, v.value0);
+};
+var snd = function (v) {
+    return v.value1;
+};
+var showTuple = function (dictShow) {
+    return function (dictShow1) {
+        return new Data_Show.Show(function (v) {
+            return "(Tuple " + (Data_Show.show(dictShow)(v.value0) + (" " + (Data_Show.show(dictShow1)(v.value1) + ")")));
+        });
+    };
+};
+var semiringTuple = function (dictSemiring) {
+    return function (dictSemiring1) {
+        return new Data_Semiring.Semiring(function (v) {
+            return function (v1) {
+                return new Tuple(Data_Semiring.add(dictSemiring)(v.value0)(v1.value0), Data_Semiring.add(dictSemiring1)(v.value1)(v1.value1));
+            };
+        }, function (v) {
+            return function (v1) {
+                return new Tuple(Data_Semiring.mul(dictSemiring)(v.value0)(v1.value0), Data_Semiring.mul(dictSemiring1)(v.value1)(v1.value1));
+            };
+        }, new Tuple(Data_Semiring.one(dictSemiring), Data_Semiring.one(dictSemiring1)), new Tuple(Data_Semiring.zero(dictSemiring), Data_Semiring.zero(dictSemiring1)));
+    };
+};
+var semigroupoidTuple = new Control_Semigroupoid.Semigroupoid(function (v) {
+    return function (v1) {
+        return new Tuple(v1.value0, v.value1);
+    };
+});
+var semigroupTuple = function (dictSemigroup) {
+    return function (dictSemigroup1) {
+        return new Data_Semigroup.Semigroup(function (v) {
+            return function (v1) {
+                return new Tuple(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0), Data_Semigroup.append(dictSemigroup1)(v.value1)(v1.value1));
+            };
+        });
+    };
+};
+var ringTuple = function (dictRing) {
+    return function (dictRing1) {
+        return new Data_Ring.Ring(function () {
+            return semiringTuple(dictRing.Semiring0())(dictRing1.Semiring0());
+        }, function (v) {
+            return function (v1) {
+                return new Tuple(Data_Ring.sub(dictRing)(v.value0)(v1.value0), Data_Ring.sub(dictRing1)(v.value1)(v1.value1));
+            };
+        });
+    };
+};
+var monoidTuple = function (dictMonoid) {
+    return function (dictMonoid1) {
+        return new Data_Monoid.Monoid(function () {
+            return semigroupTuple(dictMonoid.Semigroup0())(dictMonoid1.Semigroup0());
+        }, new Tuple(Data_Monoid.mempty(dictMonoid), Data_Monoid.mempty(dictMonoid1)));
+    };
+};
+var lookup = function (dictFoldable) {
+    return function (dictEq) {
+        return function (a) {
+            return function ($264) {
+                return Data_Newtype.unwrap(Data_Maybe_First.newtypeFirst)(Data_Foldable.foldMap(dictFoldable)(Data_Maybe_First.monoidFirst)(function (v) {
+                    var $146 = Data_Eq.eq(dictEq)(a)(v.value0);
+                    if ($146) {
+                        return new Data_Maybe.Just(v.value1);
+                    };
+                    return Data_Maybe.Nothing.value;
+                })($264));
+            };
+        };
+    };
+};
+var heytingAlgebraTuple = function (dictHeytingAlgebra) {
+    return function (dictHeytingAlgebra1) {
+        return new Data_HeytingAlgebra.HeytingAlgebra(function (v) {
+            return function (v1) {
+                return new Tuple(Data_HeytingAlgebra.conj(dictHeytingAlgebra)(v.value0)(v1.value0), Data_HeytingAlgebra.conj(dictHeytingAlgebra1)(v.value1)(v1.value1));
+            };
+        }, function (v) {
+            return function (v1) {
+                return new Tuple(Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v.value0)(v1.value0), Data_HeytingAlgebra.disj(dictHeytingAlgebra1)(v.value1)(v1.value1));
+            };
+        }, new Tuple(Data_HeytingAlgebra.ff(dictHeytingAlgebra), Data_HeytingAlgebra.ff(dictHeytingAlgebra1)), function (v) {
+            return function (v1) {
+                return new Tuple(Data_HeytingAlgebra.implies(dictHeytingAlgebra)(v.value0)(v1.value0), Data_HeytingAlgebra.implies(dictHeytingAlgebra1)(v.value1)(v1.value1));
+            };
+        }, function (v) {
+            return new Tuple(Data_HeytingAlgebra.not(dictHeytingAlgebra)(v.value0), Data_HeytingAlgebra.not(dictHeytingAlgebra1)(v.value1));
+        }, new Tuple(Data_HeytingAlgebra.tt(dictHeytingAlgebra), Data_HeytingAlgebra.tt(dictHeytingAlgebra1)));
+    };
+};
+var functorTuple = new Data_Functor.Functor(function (f) {
+    return function (v) {
+        return new Tuple(v.value0, f(v.value1));
+    };
+});
+var invariantTuple = new Data_Functor_Invariant.Invariant(Data_Functor_Invariant.imapF(functorTuple));
+var fst = function (v) {
+    return v.value0;
+};
+var lazyTuple = function (dictLazy) {
+    return function (dictLazy1) {
+        return new Control_Lazy.Lazy(function (f) {
+            return new Tuple(Control_Lazy.defer(dictLazy)(function (v) {
+                return fst(f(Data_Unit.unit));
+            }), Control_Lazy.defer(dictLazy1)(function (v) {
+                return snd(f(Data_Unit.unit));
+            }));
+        });
+    };
+};
+var foldableTuple = new Data_Foldable.Foldable(function (dictMonoid) {
+    return function (f) {
+        return function (v) {
+            return f(v.value1);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(z)(v.value1);
+        };
+    };
+}, function (f) {
+    return function (z) {
+        return function (v) {
+            return f(v.value1)(z);
+        };
+    };
+});
+var traversableTuple = new Data_Traversable.Traversable(function () {
+    return foldableTuple;
+}, function () {
+    return functorTuple;
+}, function (dictApplicative) {
+    return function (v) {
+        return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create(v.value0))(v.value1);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (v) {
+            return Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create(v.value0))(f(v.value1));
+        };
+    };
+});
+var extendTuple = new Control_Extend.Extend(function () {
+    return functorTuple;
+}, function (f) {
+    return function (v) {
+        return new Tuple(v.value0, f(v));
+    };
+});
+var eqTuple = function (dictEq) {
+    return function (dictEq1) {
+        return new Data_Eq.Eq(function (x) {
+            return function (y) {
+                return Data_Eq.eq(dictEq)(x.value0)(y.value0) && Data_Eq.eq(dictEq1)(x.value1)(y.value1);
+            };
+        });
+    };
+};
+var ordTuple = function (dictOrd) {
+    return function (dictOrd1) {
+        return new Data_Ord.Ord(function () {
+            return eqTuple(dictOrd.Eq0())(dictOrd1.Eq0());
+        }, function (x) {
+            return function (y) {
+                var v = Data_Ord.compare(dictOrd)(x.value0)(y.value0);
+                if (v instanceof Data_Ordering.LT) {
+                    return Data_Ordering.LT.value;
+                };
+                if (v instanceof Data_Ordering.GT) {
+                    return Data_Ordering.GT.value;
+                };
+                return Data_Ord.compare(dictOrd1)(x.value1)(y.value1);
+            };
+        });
+    };
+};
+var eq1Tuple = function (dictEq) {
+    return new Data_Eq.Eq1(function (dictEq1) {
+        return Data_Eq.eq(eqTuple(dictEq)(dictEq1));
+    });
+};
+var ord1Tuple = function (dictOrd) {
+    return new Data_Ord.Ord1(function () {
+        return eq1Tuple(dictOrd.Eq0());
+    }, function (dictOrd1) {
+        return Data_Ord.compare(ordTuple(dictOrd)(dictOrd1));
+    });
+};
+var distributiveTuple = function (dictTypeEquals) {
+    return new Data_Distributive.Distributive(function () {
+        return functorTuple;
+    }, function (dictFunctor) {
+        return Data_Distributive.collectDefault(distributiveTuple(dictTypeEquals))(dictFunctor);
+    }, function (dictFunctor) {
+        return function ($265) {
+            return Tuple.create(Type_Equality.from(dictTypeEquals)(Data_Unit.unit))(Data_Functor.map(dictFunctor)(snd)($265));
+        };
+    });
+};
+var curry = function (f) {
+    return function (a) {
+        return function (b) {
+            return f(new Tuple(a, b));
+        };
+    };
+};
+var comonadTuple = new Control_Comonad.Comonad(function () {
+    return extendTuple;
+}, snd);
+var commutativeRingTuple = function (dictCommutativeRing) {
+    return function (dictCommutativeRing1) {
+        return new Data_CommutativeRing.CommutativeRing(function () {
+            return ringTuple(dictCommutativeRing.Ring0())(dictCommutativeRing1.Ring0());
+        });
+    };
+};
+var boundedTuple = function (dictBounded) {
+    return function (dictBounded1) {
+        return new Data_Bounded.Bounded(function () {
+            return ordTuple(dictBounded.Ord0())(dictBounded1.Ord0());
+        }, new Tuple(Data_Bounded.bottom(dictBounded), Data_Bounded.bottom(dictBounded1)), new Tuple(Data_Bounded.top(dictBounded), Data_Bounded.top(dictBounded1)));
+    };
+};
+var booleanAlgebraTuple = function (dictBooleanAlgebra) {
+    return function (dictBooleanAlgebra1) {
+        return new Data_BooleanAlgebra.BooleanAlgebra(function () {
+            return heytingAlgebraTuple(dictBooleanAlgebra.HeytingAlgebra0())(dictBooleanAlgebra1.HeytingAlgebra0());
+        });
+    };
+};
+var bifunctorTuple = new Data_Bifunctor.Bifunctor(function (f) {
+    return function (g) {
+        return function (v) {
+            return new Tuple(f(v.value0), g(v.value1));
+        };
+    };
+});
+var bifoldableTuple = new Data_Bifoldable.Bifoldable(function (dictMonoid) {
+    return function (f) {
+        return function (g) {
+            return function (v) {
+                return Data_Semigroup.append(dictMonoid.Semigroup0())(f(v.value0))(g(v.value1));
+            };
+        };
+    };
+}, function (f) {
+    return function (g) {
+        return function (z) {
+            return function (v) {
+                return g(f(z)(v.value0))(v.value1);
+            };
+        };
+    };
+}, function (f) {
+    return function (g) {
+        return function (z) {
+            return function (v) {
+                return f(v.value0)(g(v.value1)(z));
+            };
+        };
+    };
+});
+var bitraversableTuple = new Data_Bitraversable.Bitraversable(function () {
+    return bifoldableTuple;
+}, function () {
+    return bifunctorTuple;
+}, function (dictApplicative) {
+    return function (v) {
+        return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create)(v.value0))(v.value1);
+    };
+}, function (dictApplicative) {
+    return function (f) {
+        return function (g) {
+            return function (v) {
+                return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Tuple.create)(f(v.value0)))(g(v.value1));
+            };
+        };
+    };
+});
+var biapplyTuple = new Control_Biapply.Biapply(function () {
+    return bifunctorTuple;
+}, function (v) {
+    return function (v1) {
+        return new Tuple(v.value0(v1.value0), v.value1(v1.value1));
+    };
+});
+var biapplicativeTuple = new Control_Biapplicative.Biapplicative(function () {
+    return biapplyTuple;
+}, Tuple.create);
+var applyTuple = function (dictSemigroup) {
+    return new Control_Apply.Apply(function () {
+        return functorTuple;
+    }, function (v) {
+        return function (v1) {
+            return new Tuple(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0), v.value1(v1.value1));
+        };
+    });
+};
+var bindTuple = function (dictSemigroup) {
+    return new Control_Bind.Bind(function () {
+        return applyTuple(dictSemigroup);
+    }, function (v) {
+        return function (f) {
+            var v1 = f(v.value1);
+            return new Tuple(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0), v1.value1);
+        };
+    });
+};
+var applicativeTuple = function (dictMonoid) {
+    return new Control_Applicative.Applicative(function () {
+        return applyTuple(dictMonoid.Semigroup0());
+    }, Tuple.create(Data_Monoid.mempty(dictMonoid)));
+};
+var monadTuple = function (dictMonoid) {
+    return new Control_Monad.Monad(function () {
+        return applicativeTuple(dictMonoid);
+    }, function () {
+        return bindTuple(dictMonoid.Semigroup0());
+    });
+};
+module.exports = {
+    Tuple: Tuple, 
+    curry: curry, 
+    fst: fst, 
+    lookup: lookup, 
+    snd: snd, 
+    swap: swap, 
+    uncurry: uncurry, 
+    showTuple: showTuple, 
+    eqTuple: eqTuple, 
+    eq1Tuple: eq1Tuple, 
+    ordTuple: ordTuple, 
+    ord1Tuple: ord1Tuple, 
+    boundedTuple: boundedTuple, 
+    semigroupoidTuple: semigroupoidTuple, 
+    semigroupTuple: semigroupTuple, 
+    monoidTuple: monoidTuple, 
+    semiringTuple: semiringTuple, 
+    ringTuple: ringTuple, 
+    commutativeRingTuple: commutativeRingTuple, 
+    heytingAlgebraTuple: heytingAlgebraTuple, 
+    booleanAlgebraTuple: booleanAlgebraTuple, 
+    functorTuple: functorTuple, 
+    invariantTuple: invariantTuple, 
+    bifunctorTuple: bifunctorTuple, 
+    applyTuple: applyTuple, 
+    biapplyTuple: biapplyTuple, 
+    applicativeTuple: applicativeTuple, 
+    biapplicativeTuple: biapplicativeTuple, 
+    bindTuple: bindTuple, 
+    monadTuple: monadTuple, 
+    extendTuple: extendTuple, 
+    comonadTuple: comonadTuple, 
+    lazyTuple: lazyTuple, 
+    foldableTuple: foldableTuple, 
+    bifoldableTuple: bifoldableTuple, 
+    traversableTuple: traversableTuple, 
+    bitraversableTuple: bitraversableTuple, 
+    distributiveTuple: distributiveTuple
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Biapplicative":43,"../Control.Biapply":44,"../Control.Bind":46,"../Control.Comonad":48,"../Control.Extend":50,"../Control.Lazy":51,"../Control.Monad":87,"../Control.Semigroupoid":93,"../Data.Bifoldable":122,"../Data.Bifunctor":128,"../Data.Bitraversable":129,"../Data.BooleanAlgebra":131,"../Data.Bounded":133,"../Data.CommutativeRing":134,"../Data.Distributive":136,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Function":151,"../Data.Functor":157,"../Data.Functor.Invariant":155,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Maybe.First":202,"../Data.Monoid":213,"../Data.Newtype":215,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Traversable":254,"../Data.Unit":259,"../Prelude":278,"../Type.Equality":279}],256:[function(require,module,exports){
+"use strict";
+
+exports.unfoldrArrayImpl = function (isNothing) {
+  return function (fromJust) {
+    return function (fst) {
+      return function (snd) {
+        return function (f) {
+          return function (b) {
+            var result = [];
+            var value = b;
+            while (true) { // eslint-disable-line no-constant-condition
+              var maybe = f(value);
+              if (isNothing(maybe)) return result;
+              var tuple = fromJust(maybe);
+              result.push(fst(tuple));
+              value = snd(tuple);
+            }
+          };
+        };
+      };
+    };
+  };
+};
+
+},{}],257:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Ord = require("../Data.Ord");
+var Data_Ring = require("../Data.Ring");
+var Data_Traversable = require("../Data.Traversable");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Partial_Unsafe = require("../Partial.Unsafe");
+var Prelude = require("../Prelude");
+var Unfoldable = function (unfoldr) {
+    this.unfoldr = unfoldr;
+};
+var unfoldr = function (dict) {
+    return dict.unfoldr;
+};
+var unfoldableArray = new Unfoldable($foreign.unfoldrArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
+var replicate = function (dictUnfoldable) {
+    return function (n) {
+        return function (v) {
+            var step = function (i) {
+                var $8 = i <= 0;
+                if ($8) {
+                    return Data_Maybe.Nothing.value;
+                };
+                return new Data_Maybe.Just(new Data_Tuple.Tuple(v, i - 1 | 0));
+            };
+            return unfoldr(dictUnfoldable)(step)(n);
+        };
+    };
+};
+var replicateA = function (dictApplicative) {
+    return function (dictUnfoldable) {
+        return function (dictTraversable) {
+            return function (n) {
+                return function (m) {
+                    return Data_Traversable.sequence(dictTraversable)(dictApplicative)(replicate(dictUnfoldable)(n)(m));
+                };
+            };
+        };
+    };
+};
+var singleton = function (dictUnfoldable) {
+    return replicate(dictUnfoldable)(1);
+};
+var none = function (dictUnfoldable) {
+    return unfoldr(dictUnfoldable)(Data_Function["const"](Data_Maybe.Nothing.value))(Data_Unit.unit);
+};
+var fromMaybe = function (dictUnfoldable) {
+    return unfoldr(dictUnfoldable)(function (b) {
+        return Data_Functor.map(Data_Maybe.functorMaybe)(Data_Function.flip(Data_Tuple.Tuple.create)(Data_Maybe.Nothing.value))(b);
+    });
+};
+module.exports = {
+    Unfoldable: Unfoldable, 
+    fromMaybe: fromMaybe, 
+    none: none, 
+    replicate: replicate, 
+    replicateA: replicateA, 
+    singleton: singleton, 
+    unfoldr: unfoldr, 
+    unfoldableArray: unfoldableArray
+};
+
+},{"../Data.Function":151,"../Data.Functor":157,"../Data.Maybe":204,"../Data.Ord":222,"../Data.Ring":233,"../Data.Traversable":254,"../Data.Tuple":255,"../Data.Unit":259,"../Partial.Unsafe":275,"../Prelude":278,"./foreign":256}],258:[function(require,module,exports){
+"use strict";
+
+exports.unit = {};
+
+},{}],259:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Data_Show = require("../Data.Show");
+var showUnit = new Data_Show.Show(function (v) {
+    return "unit";
+});
+module.exports = {
+    showUnit: showUnit, 
+    unit: $foreign.unit
+};
+
+},{"../Data.Show":241,"./foreign":258}],260:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Show = require("../Data.Show");
+var Void = function (x) {
+    return x;
+};
+var absurd = function (a) {
+    var spin = function (__copy_v) {
+        var __tco_result;
+        function __tco_loop(v) {
+            __copy_v = v;
+            return;
+        };
+        while (!false) {
+            __tco_result = __tco_loop(__copy_v);
+        };
+        return __tco_result;
+    };
+    return spin(a);
+};
+var showVoid = new Data_Show.Show(absurd);
+module.exports = {
+    absurd: absurd, 
+    showVoid: showVoid
+};
+
+},{"../Data.Show":241}],261:[function(require,module,exports){
+/* globals exports */
+"use strict";
+
+// module Global
+
+exports.nan = NaN;
+
+exports.isNaN = isNaN;
+
+exports.infinity = Infinity;
+
+exports.isFinite = isFinite;
+
+exports.readInt = function (radix) {
+  return function (n) {
+    return parseInt(n, radix);
+  };
+};
+
+exports.readFloat = parseFloat;
+
+exports.decodeURI = decodeURI;
+exports.encodeURI = encodeURI;
+exports.decodeURIComponent = decodeURIComponent;
+exports.encodeURIComponent = encodeURIComponent;
+
+},{}],262:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+module.exports = {
+    "decodeURI": $foreign["decodeURI"], 
+    "decodeURIComponent": $foreign["decodeURIComponent"], 
+    "encodeURI": $foreign["encodeURI"], 
+    "encodeURIComponent": $foreign["encodeURIComponent"], 
+    infinity: $foreign.infinity, 
+    "isFinite": $foreign["isFinite"], 
+    "isNaN": $foreign["isNaN"], 
+    nan: $foreign.nan, 
+    readFloat: $foreign.readFloat, 
+    readInt: $foreign.readInt
+};
+
+},{"./foreign":261}],263:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Common = require("../Common");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Aff = require("../Control.Monad.Aff");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Console = require("../Control.Monad.Eff.Console");
+var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
+var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
+var DOM = require("../DOM");
+var Data_Argonaut = require("../Data.Argonaut");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_Argonaut_Decode = require("../Data.Argonaut.Decode");
+var Data_Argonaut_Decode_Class = require("../Data.Argonaut.Decode.Class");
+var Data_Either = require("../Data.Either");
+var Data_FormURLEncoded = require("../Data.FormURLEncoded");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Show = require("../Data.Show");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Network_HTTP_Affjax = require("../Network.HTTP.Affjax");
+var Network_HTTP_Affjax_Request = require("../Network.HTTP.Affjax.Request");
+var Network_HTTP_Affjax_Response = require("../Network.HTTP.Affjax.Response");
+var Partial_Unsafe = require("../Partial.Unsafe");
+var Prelude = require("../Prelude");
+var resp1Success = function (pass) {
+    return function (j) {
+        return function (loc) {
+            return function __do() {
+                Control_Monad_Eff_Console.log(Data_Show.show(Data_Argonaut_Core.showJson)(j))();
+                var eitherChallenge = Data_Argonaut_Decode_Class.decodeJson(Common.decodeJsonChallenge)(j);
+                if (eitherChallenge instanceof Data_Either.Left) {
+                    var eitherErr = Data_Argonaut_Decode_Class.decodeJson(Common.decodeJsonErr)(j);
+                    return Data_Either.either(Common.fail(Common.Login.value))(function (v) {
+                        return Common.fail(Common.Login.value)(v.value0.err);
+                    })(eitherErr)();
+                };
+                if (eitherChallenge instanceof Data_Either.Right) {
+                    Common.progress("HMAC 1")();
+                    var salted = Common.hmacSha3(Common.fromUtf8(pass), Common.fromHex(eitherChallenge.value0.value0.salt));
+                    Common.progress("HMAC 2")();
+                    var response = Common.hmacSha3(Common.fromUtf8(salted), Common.fromUtf8(eitherChallenge.value0.value0.token));
+                    Common.progress("sending response")();
+                    var data2 = Data_FormURLEncoded.fromArray([ new Data_Tuple.Tuple("token", new Data_Maybe.Just(eitherChallenge.value0.value0.token)), new Data_Tuple.Tuple("response", new Data_Maybe.Just(response)) ]);
+                    var v = Control_Monad_Aff.runAff(function (e) {
+                        return Common.fail(Common.Login.value)(Data_Show.show(Control_Monad_Eff_Exception.showError)(e));
+                    })(function (x) {
+                        return Common.welcome(x.response)(Common.Login.value);
+                    })(Network_HTTP_Affjax.post(Network_HTTP_Affjax_Request.requestableFormURLEncoded)(Network_HTTP_Affjax_Response.responsableJson)(loc)(data2))();
+                    return Data_Unit.unit;
+                };
+                throw new Error("Failed pattern match at Login line 87, column 3 - line 104, column 12: " + [ eitherChallenge.constructor.name ]);
+            };
+        };
+    };
+};
+var onLoginClick = function (login) {
+    return function (ev) {
+        return function (x) {
+            return function __do() {
+                Control_Monad_Eff_Console.log("click!")();
+                Control_Monad_Eff_JQuery.preventDefault(ev)();
+                Control_Monad_Eff_JQuery.hide(login)();
+                var v = Data_Functor.map(Control_Monad_Eff.functorEff)(Control_Monad_Eff_JQuery.setProp("disabled")(true))(Control_Monad_Eff_JQuery.select(".login input"))();
+                var v1 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#username"))();
+                var v2 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.getValue)(Control_Monad_Eff_JQuery.select("#password"))();
+                var v3 = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Common.getAttr("action"))(Control_Monad_Eff_JQuery.select("#loginform"))();
+                Control_Monad_Eff_Console.log(v3)();
+                var username = Common.fromForeign(v1);
+                var password = Common.fromForeign(v2);
+                var $17 = !(Data_Maybe.isNothing(username) && Data_Maybe.isNothing(password));
+                if ($17) {
+                    Common.progress("Obtaining Challenge...")();
+                    var data1 = Data_FormURLEncoded.fromArray([ new Data_Tuple.Tuple("username", username) ]);
+                    var v4 = Control_Monad_Aff.runAff(function (e) {
+                        return Common.fail(Common.Login.value)(Data_Show.show(Control_Monad_Eff_Exception.showError)(e));
+                    })(function (y) {
+                        return resp1Success(Data_Maybe.fromJust()(password))(y.response)(v3);
+                    })(Network_HTTP_Affjax.post(Network_HTTP_Affjax_Request.requestableFormURLEncoded)(Network_HTTP_Affjax_Response.responsableJson)(v3)(data1))();
+                    return Control_Monad_Eff_Console.log("success so far")();
+                };
+                return Control_Monad_Eff_Console.log("error")();
+            };
+        };
+    };
+};
+module.exports = {
+    onLoginClick: onLoginClick, 
+    resp1Success: resp1Success
+};
+
+},{"../Common":37,"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":56,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Console":61,"../Control.Monad.Eff.Exception":63,"../Control.Monad.Eff.JQuery":65,"../DOM":101,"../Data.Argonaut":115,"../Data.Argonaut.Core":103,"../Data.Argonaut.Decode":106,"../Data.Argonaut.Decode.Class":104,"../Data.Either":138,"../Data.FormURLEncoded":148,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Show":241,"../Data.Tuple":255,"../Data.Unit":259,"../Network.HTTP.Affjax":270,"../Network.HTTP.Affjax.Request":267,"../Network.HTTP.Affjax.Response":268,"../Partial.Unsafe":275,"../Prelude":278}],264:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Activate = require("../Activate");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Console = require("../Control.Monad.Eff.Console");
+var Control_Monad_Eff_JQuery = require("../Control.Monad.Eff.JQuery");
+var DOM = require("../DOM");
+var Data_Function = require("../Data.Function");
+var Login = require("../Login");
+var Network_HTTP_Affjax = require("../Network.HTTP.Affjax");
+var Prelude = require("../Prelude");
+var main = Control_Monad_Eff_JQuery.ready(function __do() {
+    Control_Monad_Eff_Console.log("let's go")();
+    Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.display)(Control_Monad_Eff_JQuery.select(".js-hidden"))();
+    Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(Control_Monad_Eff_JQuery.hide)(Control_Monad_Eff_JQuery.select(".noscript"))();
+    var v = Control_Monad_Eff_JQuery.select("#activate")();
+    var v1 = Control_Monad_Eff_JQuery.select("#login")();
+    Control_Monad_Eff_JQuery.on("click")(Activate.onActivateClick(v))(v)();
+    return Control_Monad_Eff_JQuery.on("click")(Login.onLoginClick(v))(v1)();
+});
+module.exports = {
+    main: main
+};
+
+},{"../Activate":35,"../Control.Bind":46,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Console":61,"../Control.Monad.Eff.JQuery":65,"../DOM":101,"../Data.Function":151,"../Login":263,"../Network.HTTP.Affjax":270,"../Prelude":278}],265:[function(require,module,exports){
+"use strict";
+
+// module Math
+
+exports.abs = Math.abs;
+
+exports.acos = Math.acos;
+
+exports.asin = Math.asin;
+
+exports.atan = Math.atan;
+
+exports.atan2 = function (y) {
+  return function (x) {
+    return Math.atan2(y, x);
+  };
+};
+
+exports.ceil = Math.ceil;
+
+exports.cos = Math.cos;
+
+exports.exp = Math.exp;
+
+exports.floor = Math.floor;
+
+exports.trunc = Math.trunc || function (n) {
+  return n < 0 ? Math.ceil(n) : Math.floor(n);
+};
+
+exports.log = Math.log;
+
+exports.max = function (n1) {
+  return function (n2) {
+    return Math.max(n1, n2);
+  };
+};
+
+exports.min = function (n1) {
+  return function (n2) {
+    return Math.min(n1, n2);
+  };
+};
+
+exports.pow = function (n) {
+  return function (p) {
+    return Math.pow(n, p);
+  };
+};
+
+exports.remainder = function (n) {
+  return function (m) {
+    return n % m;
+  };
+};
+
+exports.round = Math.round;
+
+exports.sin = Math.sin;
+
+exports.sqrt = Math.sqrt;
+
+exports.tan = Math.tan;
+
+exports.e = Math.E;
+
+exports.ln2 = Math.LN2;
+
+exports.ln10 = Math.LN10;
+
+exports.log2e = Math.LOG2E;
+
+exports.log10e = Math.LOG10E;
+
+exports.pi = Math.PI;
+
+exports.tau = 2 * Math.PI;
+
+exports.sqrt1_2 = Math.SQRT1_2;
+
+exports.sqrt2 = Math.SQRT2;
+
+},{}],266:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+module.exports = {
+    abs: $foreign.abs, 
+    acos: $foreign.acos, 
+    asin: $foreign.asin, 
+    atan: $foreign.atan, 
+    atan2: $foreign.atan2, 
+    ceil: $foreign.ceil, 
+    cos: $foreign.cos, 
+    e: $foreign.e, 
+    exp: $foreign.exp, 
+    floor: $foreign.floor, 
+    ln10: $foreign.ln10, 
+    ln2: $foreign.ln2, 
+    log: $foreign.log, 
+    log10e: $foreign.log10e, 
+    log2e: $foreign.log2e, 
+    max: $foreign.max, 
+    min: $foreign.min, 
+    pi: $foreign.pi, 
+    pow: $foreign.pow, 
+    remainder: $foreign.remainder, 
+    round: $foreign.round, 
+    sin: $foreign.sin, 
+    sqrt: $foreign.sqrt, 
+    sqrt1_2: $foreign.sqrt1_2, 
+    sqrt2: $foreign.sqrt2, 
+    tan: $foreign.tan, 
+    tau: $foreign.tau, 
+    trunc: $foreign.trunc
+};
+
+},{"./foreign":265}],267:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var DOM_File_Types = require("../DOM.File.Types");
+var DOM_Node_Types = require("../DOM.Node.Types");
+var DOM_XHR_Types = require("../DOM.XHR.Types");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_ArrayBuffer_Types = require("../Data.ArrayBuffer.Types");
+var Data_FormURLEncoded = require("../Data.FormURLEncoded");
+var Data_Maybe = require("../Data.Maybe");
+var Data_MediaType = require("../Data.MediaType");
+var Data_MediaType_Common = require("../Data.MediaType.Common");
+var Data_Show = require("../Data.Show");
+var Data_Tuple = require("../Data.Tuple");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var Requestable = function (toRequest) {
+    this.toRequest = toRequest;
+};
+var toRequest = function (dict) {
+    return dict.toRequest;
+};
+var requestableJson = new Requestable(function (json) {
+    return new Data_Tuple.Tuple(new Data_Maybe.Just(Data_MediaType_Common.applicationJSON), Unsafe_Coerce.unsafeCoerce(Data_Show.show(Data_Argonaut_Core.showJson)(json)));
+});
+var requestableFormURLEncoded = new Requestable(function (form) {
+    return new Data_Tuple.Tuple(new Data_Maybe.Just(Data_MediaType_Common.applicationFormURLEncoded), Unsafe_Coerce.unsafeCoerce(Data_FormURLEncoded.encode(form)));
+});
+var defaultToRequest = function ($0) {
+    return Data_Tuple.Tuple.create(Data_Maybe.Nothing.value)(Unsafe_Coerce.unsafeCoerce($0));
+};
+var requestableBlob = new Requestable(defaultToRequest);
+var requestableDocument = new Requestable(defaultToRequest);
+var requestableFloat32Array = new Requestable(defaultToRequest);
+var requestableFloat64Array = new Requestable(defaultToRequest);
+var requestableFormData = new Requestable(defaultToRequest);
+var requestableInt16Array = new Requestable(defaultToRequest);
+var requestableInt32Array = new Requestable(defaultToRequest);
+var requestableInt8Array = new Requestable(defaultToRequest);
+var requestableRequestContent = new Requestable(defaultToRequest);
+var requestableString = new Requestable(defaultToRequest);
+var requestableUint16Array = new Requestable(defaultToRequest);
+var requestableUint32Array = new Requestable(defaultToRequest);
+var requestableUint8Array = new Requestable(defaultToRequest);
+var requestableUint8ClampedArray = new Requestable(defaultToRequest);
+var requestableUnit = new Requestable(defaultToRequest);
+module.exports = {
+    Requestable: Requestable, 
+    toRequest: toRequest, 
+    requestableRequestContent: requestableRequestContent, 
+    requestableInt8Array: requestableInt8Array, 
+    requestableInt16Array: requestableInt16Array, 
+    requestableInt32Array: requestableInt32Array, 
+    requestableUint8Array: requestableUint8Array, 
+    requestableUint16Array: requestableUint16Array, 
+    requestableUint32Array: requestableUint32Array, 
+    requestableUint8ClampedArray: requestableUint8ClampedArray, 
+    requestableFloat32Array: requestableFloat32Array, 
+    requestableFloat64Array: requestableFloat64Array, 
+    requestableBlob: requestableBlob, 
+    requestableDocument: requestableDocument, 
+    requestableString: requestableString, 
+    requestableJson: requestableJson, 
+    requestableFormData: requestableFormData, 
+    requestableFormURLEncoded: requestableFormURLEncoded, 
+    requestableUnit: requestableUnit
+};
+
+},{"../Control.Semigroupoid":93,"../DOM.File.Types":96,"../DOM.Node.Types":97,"../DOM.XHR.Types":100,"../Data.Argonaut.Core":103,"../Data.ArrayBuffer.Types":121,"../Data.FormURLEncoded":148,"../Data.Maybe":204,"../Data.MediaType":206,"../Data.MediaType.Common":205,"../Data.Show":241,"../Data.Tuple":255,"../Prelude":278,"../Unsafe.Coerce":282}],268:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var DOM_File_Types = require("../DOM.File.Types");
+var DOM_Node_Types = require("../DOM.Node.Types");
+var Data_Argonaut_Core = require("../Data.Argonaut.Core");
+var Data_ArrayBuffer_Types = require("../Data.ArrayBuffer.Types");
+var Data_Eq = require("../Data.Eq");
+var Data_Foreign = require("../Data.Foreign");
+var Data_Function = require("../Data.Function");
+var Data_Identity = require("../Data.Identity");
+var Data_Maybe = require("../Data.Maybe");
+var Data_MediaType = require("../Data.MediaType");
+var Data_MediaType_Common = require("../Data.MediaType.Common");
+var Data_Show = require("../Data.Show");
+var Data_Tuple = require("../Data.Tuple");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var Unsafe_Coerce = require("../Unsafe.Coerce");
+var ArrayBufferResponse = (function () {
+    function ArrayBufferResponse() {
+
+    };
+    ArrayBufferResponse.value = new ArrayBufferResponse();
+    return ArrayBufferResponse;
+})();
+var BlobResponse = (function () {
+    function BlobResponse() {
+
+    };
+    BlobResponse.value = new BlobResponse();
+    return BlobResponse;
+})();
+var DocumentResponse = (function () {
+    function DocumentResponse() {
+
+    };
+    DocumentResponse.value = new DocumentResponse();
+    return DocumentResponse;
+})();
+var JSONResponse = (function () {
+    function JSONResponse() {
+
+    };
+    JSONResponse.value = new JSONResponse();
+    return JSONResponse;
+})();
+var StringResponse = (function () {
+    function StringResponse() {
+
+    };
+    StringResponse.value = new StringResponse();
+    return StringResponse;
+})();
+var Respondable = function (fromResponse, responseType) {
+    this.fromResponse = fromResponse;
+    this.responseType = responseType;
+};
+var showResponseType = new Data_Show.Show(function (v) {
+    if (v instanceof ArrayBufferResponse) {
+        return "ArrayBufferResponse";
+    };
+    if (v instanceof BlobResponse) {
+        return "BlobResponse";
+    };
+    if (v instanceof DocumentResponse) {
+        return "DocumentResponse";
+    };
+    if (v instanceof JSONResponse) {
+        return "JSONResponse";
+    };
+    if (v instanceof StringResponse) {
+        return "StringResponse";
+    };
+    throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 42, column 3 - line 43, column 3: " + [ v.constructor.name ]);
+});
+var responseTypeToString = function (v) {
+    if (v instanceof ArrayBufferResponse) {
+        return "arraybuffer";
+    };
+    if (v instanceof BlobResponse) {
+        return "blob";
+    };
+    if (v instanceof DocumentResponse) {
+        return "document";
+    };
+    if (v instanceof JSONResponse) {
+        return "text";
+    };
+    if (v instanceof StringResponse) {
+        return "text";
+    };
+    throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 49, column 1 - line 50, column 1: " + [ v.constructor.name ]);
+};
+var responseType = function (dict) {
+    return dict.responseType;
+};
+var responsableUnit = new Respondable(Data_Function["const"](Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Unit.unit)), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, StringResponse.value));
+var responsableString = new Respondable(Data_Foreign.readString, new Data_Tuple.Tuple(Data_Maybe.Nothing.value, StringResponse.value));
+var responsableJson = new Respondable(function ($8) {
+    return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Unsafe_Coerce.unsafeCoerce($8));
+}, new Data_Tuple.Tuple(new Data_Maybe.Just(Data_MediaType_Common.applicationJSON), JSONResponse.value));
+var responsableForeign = new Respondable(function ($9) {
+    return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Unsafe_Coerce.unsafeCoerce($9));
+}, new Data_Tuple.Tuple(Data_Maybe.Nothing.value, JSONResponse.value));
+var responsableDocument = new Respondable(Data_Foreign.unsafeReadTagged("Document"), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, DocumentResponse.value));
+var responsableBlob = new Respondable(Data_Foreign.unsafeReadTagged("Blob"), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, BlobResponse.value));
+var responsableArrayBuffer = new Respondable(Data_Foreign.unsafeReadTagged("ArrayBuffer"), new Data_Tuple.Tuple(Data_Maybe.Nothing.value, ArrayBufferResponse.value));
+var fromResponse = function (dict) {
+    return dict.fromResponse;
+};
+var eqResponseType = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        if (v instanceof ArrayBufferResponse && v1 instanceof ArrayBufferResponse) {
+            return true;
+        };
+        if (v instanceof BlobResponse && v1 instanceof BlobResponse) {
+            return true;
+        };
+        if (v instanceof DocumentResponse && v1 instanceof DocumentResponse) {
+            return true;
+        };
+        if (v instanceof JSONResponse && v1 instanceof JSONResponse) {
+            return true;
+        };
+        if (v instanceof StringResponse && v1 instanceof StringResponse) {
+            return true;
+        };
+        return false;
+    };
+});
+module.exports = {
+    ArrayBufferResponse: ArrayBufferResponse, 
+    BlobResponse: BlobResponse, 
+    DocumentResponse: DocumentResponse, 
+    JSONResponse: JSONResponse, 
+    StringResponse: StringResponse, 
+    Respondable: Respondable, 
+    fromResponse: fromResponse, 
+    responseType: responseType, 
+    responseTypeToString: responseTypeToString, 
+    eqResponseType: eqResponseType, 
+    showResponseType: showResponseType, 
+    responsableBlob: responsableBlob, 
+    responsableDocument: responsableDocument, 
+    responsableForeign: responsableForeign, 
+    responsableString: responsableString, 
+    responsableUnit: responsableUnit, 
+    responsableArrayBuffer: responsableArrayBuffer, 
+    responsableJson: responsableJson
+};
+
+},{"../Control.Applicative":40,"../Control.Monad.Except.Trans":73,"../Control.Semigroupoid":93,"../DOM.File.Types":96,"../DOM.Node.Types":97,"../Data.Argonaut.Core":103,"../Data.ArrayBuffer.Types":121,"../Data.Eq":140,"../Data.Foreign":147,"../Data.Function":151,"../Data.Identity":163,"../Data.Maybe":204,"../Data.MediaType":206,"../Data.MediaType.Common":205,"../Data.Show":241,"../Data.Tuple":255,"../Data.Unit":259,"../Prelude":278,"../Unsafe.Coerce":282}],269:[function(require,module,exports){
+(function (process){
+/* global exports */
+/* global XMLHttpRequest */
+/* global module */
+/* global process */
+"use strict";
+
+// module Network.HTTP.Affjax
+
+// jshint maxparams: 5
+exports._ajax = function (mkHeader, options, canceler, errback, callback) {
+  var platformSpecific = { };
+  if (typeof module !== "undefined" && module.require && !(typeof process !== "undefined" && process.versions["electron"])) {
+    // We are on node.js
+    platformSpecific.newXHR = function () {
+      var XHR = module.require("xhr2");
+      return new XHR();
+    };
+
+    platformSpecific.fixupUrl = function (url) {
+      var urllib = module.require("url");
+      var u = urllib.parse(url);
+      u.protocol = u.protocol || "http:";
+      u.hostname = u.hostname || "localhost";
+      return urllib.format(u);
+    };
+
+    platformSpecific.getResponse = function (xhr) {
+      return xhr.response;
+    };
+  } else {
+    // We are in the browser
+    platformSpecific.newXHR = function () {
+      return new XMLHttpRequest();
+    };
+
+    platformSpecific.fixupUrl = function (url) {
+      return url || "/";
+    };
+
+    platformSpecific.getResponse = function (xhr) {
+      return xhr.response;
+    };
+  }
+
+  return function () {
+    var xhr = platformSpecific.newXHR();
+    var fixedUrl = platformSpecific.fixupUrl(options.url);
+    xhr.open(options.method || "GET", fixedUrl, true, options.username, options.password);
+    if (options.headers) {
+      try {
+        for (var i = 0, header; (header = options.headers[i]) != null; i++) {
+          xhr.setRequestHeader(header.field, header.value);
+        }
+      }
+      catch (e) {
+        errback(e)();
+      }
+    }
+    xhr.onerror = function () {
+      errback(new Error("AJAX request failed: " + options.method + " " + options.url))();
+    };
+    xhr.onload = function () {
+      callback({
+        status: xhr.status,
+        headers: xhr.getAllResponseHeaders().split("\r\n")
+          .filter(function (header) {
+            return header.length > 0;
+          })
+          .map(function (header) {
+            var i = header.indexOf(":");
+            return mkHeader(header.substring(0, i))(header.substring(i + 2));
+          }),
+        response: platformSpecific.getResponse(xhr)
+      })();
+    };
+    xhr.responseType = options.responseType;
+    xhr.withCredentials = options.withCredentials;
+    xhr.send(options.content);
+    return canceler(xhr);
+  };
+};
+
+// jshint maxparams: 4
+exports._cancelAjax = function (xhr, cancelError, errback, callback) {
+  return function () {
+    try { xhr.abort(); } catch (e) { return callback(false)(); }
+    return callback(true)();
+  };
+};
+
+
+}).call(this,require('_process'))
+},{"_process":284}],270:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Control_Applicative = require("../Control.Applicative");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad_Aff = require("../Control.Monad.Aff");
+var Control_Monad_Aff_AVar = require("../Control.Monad.Aff.AVar");
+var Control_Monad_Eff = require("../Control.Monad.Eff");
+var Control_Monad_Eff_Class = require("../Control.Monad.Eff.Class");
+var Control_Monad_Eff_Exception = require("../Control.Monad.Eff.Exception");
+var Control_Monad_Eff_Ref = require("../Control.Monad.Eff.Ref");
+var Control_Monad_Error_Class = require("../Control.Monad.Error.Class");
+var Control_Monad_Except = require("../Control.Monad.Except");
+var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var DOM_XHR_Types = require("../DOM.XHR.Types");
+var Data_Argonaut_Parser = require("../Data.Argonaut.Parser");
+var Data_Array = require("../Data.Array");
+var Data_Either = require("../Data.Either");
+var Data_Eq = require("../Data.Eq");
+var Data_Foldable = require("../Data.Foldable");
+var Data_Foreign = require("../Data.Foreign");
+var Data_Function = require("../Data.Function");
+var Data_Function_Uncurried = require("../Data.Function.Uncurried");
+var Data_Functor = require("../Data.Functor");
+var Data_HTTP_Method = require("../Data.HTTP.Method");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Identity = require("../Data.Identity");
+var Data_Int = require("../Data.Int");
+var Data_List_Types = require("../Data.List.Types");
+var Data_Maybe = require("../Data.Maybe");
+var Data_MediaType = require("../Data.MediaType");
+var Data_Nullable = require("../Data.Nullable");
+var Data_Ring = require("../Data.Ring");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Time_Duration = require("../Data.Time.Duration");
+var Data_Tuple = require("../Data.Tuple");
+var $$Math = require("../Math");
+var Network_HTTP_Affjax_Request = require("../Network.HTTP.Affjax.Request");
+var Network_HTTP_Affjax_Response = require("../Network.HTTP.Affjax.Response");
+var Network_HTTP_RequestHeader = require("../Network.HTTP.RequestHeader");
+var Network_HTTP_ResponseHeader = require("../Network.HTTP.ResponseHeader");
+var Network_HTTP_StatusCode = require("../Network.HTTP.StatusCode");
+var Prelude = require("../Prelude");
+var retry = function (dictRequestable) {
+    return function (policy) {
+        return function (run) {
+            return function (req) {
+                var retryState = function (v) {
+                    if (v instanceof Data_Either.Left) {
+                        return Data_Either.Left.create(new Data_Either.Left(v.value0));
+                    };
+                    if (v instanceof Data_Either.Right) {
+                        if (v.value0.status === 200) {
+                            return new Data_Either.Right(v.value0);
+                        };
+                        var $49 = policy.shouldRetryWithStatusCode(v.value0.status);
+                        if ($49) {
+                            return Data_Either.Left.create(new Data_Either.Right(v.value0));
+                        };
+                        return new Data_Either.Right(v.value0);
+                    };
+                    throw new Error("Failed pattern match at Network.HTTP.Affjax line 217, column 5 - line 217, column 44: " + [ v.constructor.name ]);
+                };
+                var go = function (failureRef) {
+                    return function (n) {
+                        return Control_Bind.bind(Control_Monad_Aff.bindAff)(Data_Functor.map(Control_Monad_Aff.functorAff)(retryState)(Control_Monad_Aff.attempt(run(req))))(function (v) {
+                            if (v instanceof Data_Either.Left) {
+                                return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Eff_Class.liftEff(Control_Monad_Aff.monadEffAff)(Control_Monad_Eff_Ref.writeRef(failureRef)(new Data_Maybe.Just(v.value0))))(function () {
+                                    return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Aff.delay(policy.delayCurve(n)))(function () {
+                                        return go(failureRef)(n + 1 | 0);
+                                    });
+                                });
+                            };
+                            if (v instanceof Data_Either.Right) {
+                                return Control_Applicative.pure(Control_Monad_Aff.applicativeAff)(v.value0);
+                            };
+                            throw new Error("Failed pattern match at Network.HTTP.Affjax line 229, column 7 - line 234, column 32: " + [ v.constructor.name ]);
+                        });
+                    };
+                };
+                return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Eff_Class.liftEff(Control_Monad_Aff.monadEffAff)(Control_Monad_Eff_Ref.newRef(Data_Maybe.Nothing.value)))(function (v) {
+                    var loop = go(v);
+                    if (policy.timeout instanceof Data_Maybe.Nothing) {
+                        return loop(1);
+                    };
+                    if (policy.timeout instanceof Data_Maybe.Just) {
+                        return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff_AVar.makeVar)(function (v1) {
+                            return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff.forkAff(Control_Bind.bind(Control_Monad_Aff.bindAff)(loop(1))(function ($104) {
+                                return Control_Monad_Aff_AVar.putVar(v1)(Data_Maybe.Just.create($104));
+                            })))(function (v2) {
+                                return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff.forkAff(Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Aff.delay(policy.timeout.value0))(function () {
+                                    return Control_Bind.discard(Control_Bind.discardUnit)(Control_Monad_Aff.bindAff)(Control_Monad_Aff_AVar.putVar(v1)(Data_Maybe.Nothing.value))(function () {
+                                        return Control_Monad_Aff.cancel(v2)(Control_Monad_Eff_Exception.error("Cancel"));
+                                    });
+                                })))(function (v3) {
+                                    return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Aff_AVar.takeVar(v1))(function (v4) {
+                                        if (v4 instanceof Data_Maybe.Nothing) {
+                                            return Control_Bind.bind(Control_Monad_Aff.bindAff)(Control_Monad_Eff_Class.liftEff(Control_Monad_Aff.monadEffAff)(Control_Monad_Eff_Ref.readRef(v)))(function (v5) {
+                                                if (v5 instanceof Data_Maybe.Nothing) {
+                                                    return Control_Monad_Error_Class.throwError(Control_Monad_Aff.monadThrowAff)(Control_Monad_Eff_Exception.error("Timeout"));
+                                                };
+                                                if (v5 instanceof Data_Maybe.Just) {
+                                                    return Data_Either.either(Control_Monad_Error_Class.throwError(Control_Monad_Aff.monadThrowAff))(Control_Applicative.pure(Control_Monad_Aff.applicativeAff))(v5.value0);
+                                                };
+                                                throw new Error("Failed pattern match at Network.HTTP.Affjax line 209, column 11 - line 211, column 61: " + [ v5.constructor.name ]);
+                                            });
+                                        };
+                                        if (v4 instanceof Data_Maybe.Just) {
+                                            return Control_Applicative.pure(Control_Monad_Aff.applicativeAff)(v4.value0);
+                                        };
+                                        throw new Error("Failed pattern match at Network.HTTP.Affjax line 206, column 7 - line 212, column 31: " + [ v4.constructor.name ]);
+                                    });
+                                });
+                            });
+                        });
+                    };
+                    throw new Error("Failed pattern match at Network.HTTP.Affjax line 195, column 3 - line 212, column 31: " + [ policy.timeout.constructor.name ]);
+                });
+            };
+        };
+    };
+};
+var defaultRetryPolicy = {
+    timeout: Data_Maybe.Nothing.value, 
+    delayCurve: function (n) {
+        return Data_Time_Duration.Milliseconds($$Math.max(30.0 * 1000.0)(100.0 * $$Math.pow(2.0)(Data_Int.toNumber(n - 1 | 0))));
+    }, 
+    shouldRetryWithStatusCode: Data_Function["const"](false)
+};
+var defaultRequest = {
+    method: new Data_Either.Left(Data_HTTP_Method.GET.value), 
+    url: "/", 
+    headers: [  ], 
+    content: Data_Maybe.Nothing.value, 
+    username: Data_Maybe.Nothing.value, 
+    password: Data_Maybe.Nothing.value, 
+    withCredentials: false
+};
+var cancelAjax = function (xhr) {
+    return function (err) {
+        return Control_Monad_Aff.makeAff(function (eb) {
+            return function (cb) {
+                return $foreign._cancelAjax(xhr, err, eb, cb);
+            };
+        });
+    };
+};
+var affjax$prime = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function (req) {
+            return function (eb) {
+                return function (cb) {
+                    var responseSettings = Network_HTTP_Affjax_Response.responseType(dictRespondable);
+                    var requestSettings = (function () {
+                        var v = Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_Affjax_Request.toRequest(dictRequestable))(req.content);
+                        if (v instanceof Data_Maybe.Nothing) {
+                            return new Data_Tuple.Tuple(Data_Maybe.Nothing.value, Data_Maybe.Nothing.value);
+                        };
+                        if (v instanceof Data_Maybe.Just) {
+                            return new Data_Tuple.Tuple(v.value0.value0, new Data_Maybe.Just(v.value0.value1));
+                        };
+                        throw new Error("Failed pattern match at Network.HTTP.Affjax line 262, column 21 - line 264, column 49: " + [ v.constructor.name ]);
+                    })();
+                    var parseJSON = function ($105) {
+                        return Data_Either.either(function ($106) {
+                            return Data_Foreign.fail(Data_Foreign.JSONError.create($106));
+                        })(function ($107) {
+                            return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Foreign.toForeign($107));
+                        })(Data_Argonaut_Parser.jsonParser($105));
+                    };
+                    var fromResponse$prime = (function () {
+                        var v = Data_Tuple.snd(responseSettings);
+                        if (v instanceof Network_HTTP_Affjax_Response.JSONResponse) {
+                            return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(Network_HTTP_Affjax_Response.fromResponse(dictRespondable))(Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(parseJSON)(Data_Foreign.readString));
+                        };
+                        return Network_HTTP_Affjax_Response.fromResponse(dictRespondable);
+                    })();
+                    var cb$prime = function (res) {
+                        var v = Data_Functor.map(Data_Either.functorEither)(function (v1) {
+                            var $72 = {};
+                            for (var $73 in res) {
+                                if ({}.hasOwnProperty.call(res, $73)) {
+                                    $72[$73] = res[$73];
+                                };
+                            };
+                            $72.response = v1;
+                            return $72;
+                        })(Control_Monad_Except.runExcept(fromResponse$prime(res.response)));
+                        if (v instanceof Data_Either.Left) {
+                            return eb(Control_Monad_Eff_Exception.error(Data_Show.show(Data_List_Types.showNonEmptyList(Data_Foreign.showForeignError))(v.value0)));
+                        };
+                        if (v instanceof Data_Either.Right) {
+                            return cb(v.value0);
+                        };
+                        throw new Error("Failed pattern match at Network.HTTP.Affjax line 281, column 13 - line 283, column 26: " + [ v.constructor.name ]);
+                    };
+                    var addHeader = function (mh) {
+                        return function (hs) {
+                            if (mh instanceof Data_Maybe.Just && !Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Function.on(Data_Eq.eq(Data_Eq.eqString))(Network_HTTP_RequestHeader.requestHeaderName)(mh.value0))(hs)) {
+                                return Data_Array.snoc(hs)(mh.value0);
+                            };
+                            return hs;
+                        };
+                    };
+                    var headers = addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.ContentType.create)(Data_Tuple.fst(requestSettings)))(addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.Accept.create)(Data_Tuple.fst(responseSettings)))(req.headers));
+                    var req$prime = {
+                        method: Data_HTTP_Method.print(req.method), 
+                        url: req.url, 
+                        headers: Data_Functor.map(Data_Functor.functorArray)(function (h) {
+                            return {
+                                field: Network_HTTP_RequestHeader.requestHeaderName(h), 
+                                value: Network_HTTP_RequestHeader.requestHeaderValue(h)
+                            };
+                        })(headers), 
+                        content: Data_Nullable.toNullable(Data_Tuple.snd(requestSettings)), 
+                        responseType: Network_HTTP_Affjax_Response.responseTypeToString(Data_Tuple.snd(responseSettings)), 
+                        username: Data_Nullable.toNullable(req.username), 
+                        password: Data_Nullable.toNullable(req.password), 
+                        withCredentials: req.withCredentials
+                    };
+                    return $foreign._ajax(Network_HTTP_ResponseHeader.responseHeader, req$prime, cancelAjax, eb, cb$prime);
+                };
+            };
+        };
+    };
+};
+var affjax = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function ($108) {
+            return Control_Monad_Aff["makeAff'"](affjax$prime(dictRequestable)(dictRespondable)($108));
+        };
+    };
+};
+var $$delete = function (dictRespondable) {
+    return function (u) {
+        return affjax(Network_HTTP_Affjax_Request.requestableUnit)(dictRespondable)((function () {
+            var $80 = {};
+            for (var $81 in defaultRequest) {
+                if ({}.hasOwnProperty.call(defaultRequest, $81)) {
+                    $80[$81] = defaultRequest[$81];
+                };
+            };
+            $80.method = new Data_Either.Left(Data_HTTP_Method.DELETE.value);
+            $80.url = u;
+            return $80;
+        })());
+    };
+};
+var delete_ = $$delete(Network_HTTP_Affjax_Response.responsableUnit);
+var get = function (dictRespondable) {
+    return function (u) {
+        return affjax(Network_HTTP_Affjax_Request.requestableUnit)(dictRespondable)((function () {
+            var $83 = {};
+            for (var $84 in defaultRequest) {
+                if ({}.hasOwnProperty.call(defaultRequest, $84)) {
+                    $83[$84] = defaultRequest[$84];
+                };
+            };
+            $83.url = u;
+            return $83;
+        })());
+    };
+};
+var patch = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function (u) {
+            return function (c) {
+                return affjax(dictRequestable)(dictRespondable)((function () {
+                    var $86 = {};
+                    for (var $87 in defaultRequest) {
+                        if ({}.hasOwnProperty.call(defaultRequest, $87)) {
+                            $86[$87] = defaultRequest[$87];
+                        };
+                    };
+                    $86.method = new Data_Either.Left(Data_HTTP_Method.PATCH.value);
+                    $86.url = u;
+                    $86.content = new Data_Maybe.Just(c);
+                    return $86;
+                })());
+            };
+        };
+    };
+};
+var patch_ = function (dictRequestable) {
+    return patch(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
+};
+var patch$prime = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function (u) {
+            return function (c) {
+                return affjax(dictRequestable)(dictRespondable)((function () {
+                    var $89 = {};
+                    for (var $90 in defaultRequest) {
+                        if ({}.hasOwnProperty.call(defaultRequest, $90)) {
+                            $89[$90] = defaultRequest[$90];
+                        };
+                    };
+                    $89.method = new Data_Either.Left(Data_HTTP_Method.PATCH.value);
+                    $89.url = u;
+                    $89.content = c;
+                    return $89;
+                })());
+            };
+        };
+    };
+};
+var patch_$prime = function (dictRequestable) {
+    return patch$prime(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
+};
+var post = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function (u) {
+            return function (c) {
+                return affjax(dictRequestable)(dictRespondable)((function () {
+                    var $92 = {};
+                    for (var $93 in defaultRequest) {
+                        if ({}.hasOwnProperty.call(defaultRequest, $93)) {
+                            $92[$93] = defaultRequest[$93];
+                        };
+                    };
+                    $92.method = new Data_Either.Left(Data_HTTP_Method.POST.value);
+                    $92.url = u;
+                    $92.content = new Data_Maybe.Just(c);
+                    return $92;
+                })());
+            };
+        };
+    };
+};
+var post_ = function (dictRequestable) {
+    return post(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
+};
+var post$prime = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function (u) {
+            return function (c) {
+                return affjax(dictRequestable)(dictRespondable)((function () {
+                    var $95 = {};
+                    for (var $96 in defaultRequest) {
+                        if ({}.hasOwnProperty.call(defaultRequest, $96)) {
+                            $95[$96] = defaultRequest[$96];
+                        };
+                    };
+                    $95.method = new Data_Either.Left(Data_HTTP_Method.POST.value);
+                    $95.url = u;
+                    $95.content = c;
+                    return $95;
+                })());
+            };
+        };
+    };
+};
+var post_$prime = function (dictRequestable) {
+    return post$prime(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
+};
+var put = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function (u) {
+            return function (c) {
+                return affjax(dictRequestable)(dictRespondable)((function () {
+                    var $98 = {};
+                    for (var $99 in defaultRequest) {
+                        if ({}.hasOwnProperty.call(defaultRequest, $99)) {
+                            $98[$99] = defaultRequest[$99];
+                        };
+                    };
+                    $98.method = new Data_Either.Left(Data_HTTP_Method.PUT.value);
+                    $98.url = u;
+                    $98.content = new Data_Maybe.Just(c);
+                    return $98;
+                })());
+            };
+        };
+    };
+};
+var put_ = function (dictRequestable) {
+    return put(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
+};
+var put$prime = function (dictRequestable) {
+    return function (dictRespondable) {
+        return function (u) {
+            return function (c) {
+                return affjax(dictRequestable)(dictRespondable)((function () {
+                    var $101 = {};
+                    for (var $102 in defaultRequest) {
+                        if ({}.hasOwnProperty.call(defaultRequest, $102)) {
+                            $101[$102] = defaultRequest[$102];
+                        };
+                    };
+                    $101.method = new Data_Either.Left(Data_HTTP_Method.PUT.value);
+                    $101.url = u;
+                    $101.content = c;
+                    return $101;
+                })());
+            };
+        };
+    };
+};
+var put_$prime = function (dictRequestable) {
+    return put$prime(dictRequestable)(Network_HTTP_Affjax_Response.responsableUnit);
+};
+module.exports = {
+    affjax: affjax, 
+    "affjax'": affjax$prime, 
+    defaultRequest: defaultRequest, 
+    defaultRetryPolicy: defaultRetryPolicy, 
+    "delete": $$delete, 
+    delete_: delete_, 
+    get: get, 
+    patch: patch, 
+    "patch'": patch$prime, 
+    patch_: patch_, 
+    "patch_'": patch_$prime, 
+    post: post, 
+    "post'": post$prime, 
+    post_: post_, 
+    "post_'": post_$prime, 
+    put: put, 
+    "put'": put$prime, 
+    put_: put_, 
+    "put_'": put_$prime, 
+    retry: retry
+};
+
+},{"../Control.Applicative":40,"../Control.Bind":46,"../Control.Monad.Aff":56,"../Control.Monad.Aff.AVar":52,"../Control.Monad.Eff":71,"../Control.Monad.Eff.Class":59,"../Control.Monad.Eff.Exception":63,"../Control.Monad.Eff.Ref":67,"../Control.Monad.Error.Class":72,"../Control.Monad.Except":74,"../Control.Monad.Except.Trans":73,"../Control.Semigroupoid":93,"../DOM.XHR.Types":100,"../Data.Argonaut.Parser":112,"../Data.Array":120,"../Data.Either":138,"../Data.Eq":140,"../Data.Foldable":145,"../Data.Foreign":147,"../Data.Function":151,"../Data.Function.Uncurried":150,"../Data.Functor":157,"../Data.HTTP.Method":160,"../Data.HeytingAlgebra":162,"../Data.Identity":163,"../Data.Int":167,"../Data.List.Types":199,"../Data.Maybe":204,"../Data.MediaType":206,"../Data.Nullable":218,"../Data.Ring":233,"../Data.Semiring":239,"../Data.Show":241,"../Data.Time.Duration":250,"../Data.Tuple":255,"../Math":266,"../Network.HTTP.Affjax.Request":267,"../Network.HTTP.Affjax.Response":268,"../Network.HTTP.RequestHeader":271,"../Network.HTTP.ResponseHeader":272,"../Network.HTTP.StatusCode":273,"../Prelude":278,"./foreign":269}],271:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Data_Eq = require("../Data.Eq");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_MediaType = require("../Data.MediaType");
+var Data_Newtype = require("../Data.Newtype");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Accept = (function () {
+    function Accept(value0) {
+        this.value0 = value0;
+    };
+    Accept.create = function (value0) {
+        return new Accept(value0);
+    };
+    return Accept;
+})();
+var ContentType = (function () {
+    function ContentType(value0) {
+        this.value0 = value0;
+    };
+    ContentType.create = function (value0) {
+        return new ContentType(value0);
+    };
+    return ContentType;
+})();
+var RequestHeader = (function () {
+    function RequestHeader(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    RequestHeader.create = function (value0) {
+        return function (value1) {
+            return new RequestHeader(value0, value1);
+        };
+    };
+    return RequestHeader;
+})();
+var showRequestHeader = new Data_Show.Show(function (v) {
+    if (v instanceof Accept) {
+        return "(Accept " + (Data_Show.show(Data_MediaType.showMediaType)(v.value0) + ")");
+    };
+    if (v instanceof ContentType) {
+        return "(ContentType " + (Data_Show.show(Data_MediaType.showMediaType)(v.value0) + ")");
+    };
+    if (v instanceof RequestHeader) {
+        return "(RequestHeader " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(Data_Show.showString)(v.value1) + ")")));
+    };
+    throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 20, column 3 - line 21, column 3: " + [ v.constructor.name ]);
+});
+var requestHeaderValue = function (v) {
+    if (v instanceof Accept) {
+        return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
+    };
+    if (v instanceof ContentType) {
+        return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
+    };
+    if (v instanceof RequestHeader) {
+        return v.value1;
+    };
+    throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 30, column 1 - line 30, column 41: " + [ v.constructor.name ]);
+};
+var requestHeaderName = function (v) {
+    if (v instanceof Accept) {
+        return "Accept";
+    };
+    if (v instanceof ContentType) {
+        return "Content-Type";
+    };
+    if (v instanceof RequestHeader) {
+        return v.value0;
+    };
+    throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 25, column 1 - line 26, column 1: " + [ v.constructor.name ]);
+};
+var eqRequestHeader = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        if (v instanceof Accept && v1 instanceof Accept) {
+            return Data_Eq.eq(Data_MediaType.eqMediaType)(v.value0)(v1.value0);
+        };
+        if (v instanceof ContentType && v1 instanceof ContentType) {
+            return Data_Eq.eq(Data_MediaType.eqMediaType)(v.value0)(v1.value0);
+        };
+        if (v instanceof RequestHeader && v1 instanceof RequestHeader) {
+            return v.value0 === v1.value0 && v.value1 === v1.value1;
+        };
+        return false;
+    };
+});
+module.exports = {
+    Accept: Accept, 
+    ContentType: ContentType, 
+    RequestHeader: RequestHeader, 
+    requestHeaderName: requestHeaderName, 
+    requestHeaderValue: requestHeaderValue, 
+    eqRequestHeader: eqRequestHeader, 
+    showRequestHeader: showRequestHeader
+};
+
+},{"../Data.Eq":140,"../Data.HeytingAlgebra":162,"../Data.MediaType":206,"../Data.Newtype":215,"../Data.Semigroup":237,"../Data.Show":241,"../Prelude":278}],272:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Data_Eq = require("../Data.Eq");
+var Data_Generic = require("../Data.Generic");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var ResponseHeader = (function () {
+    function ResponseHeader(value0, value1) {
+        this.value0 = value0;
+        this.value1 = value1;
+    };
+    ResponseHeader.create = function (value0) {
+        return function (value1) {
+            return new ResponseHeader(value0, value1);
+        };
+    };
+    return ResponseHeader;
+})();
+var showResponseHeader = new Data_Show.Show(function (v) {
+    return "(ResponseHeader " + (Data_Show.show(Data_Show.showString)(v.value0) + (" " + (Data_Show.show(Data_Show.showString)(v.value1) + ")")));
+});
+var responseHeaderValue = function (v) {
+    return v.value1;
+};
+var responseHeaderName = function (v) {
+    return v.value0;
+};
+var responseHeader = function (field) {
+    return function (value) {
+        return new ResponseHeader(field, value);
+    };
+};
+var genericResponseHeader = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Network.HTTP.ResponseHeader.ResponseHeader" && v.value1.length === 2)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(ResponseHeader.create))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][0](Data_Unit.unit))))(Data_Generic.fromSpine(Data_Generic.genericString)(v["value1"][1](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Network.HTTP.ResponseHeader.ResponseHeader", [ {
+        sigConstructor: "Network.HTTP.ResponseHeader.ResponseHeader", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
+        }, function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericString)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Network.HTTP.ResponseHeader.ResponseHeader", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericString)(v.value0);
+    }, function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericString)(v.value1);
+    } ]);
+});
+var eqResponseHeader = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        return v.value0 === v1.value0 && v.value1 === v1.value1;
+    };
+});
+module.exports = {
+    responseHeader: responseHeader, 
+    responseHeaderName: responseHeaderName, 
+    responseHeaderValue: responseHeaderValue, 
+    genericResponseHeader: genericResponseHeader, 
+    eqResponseHeader: eqResponseHeader, 
+    showResponseHeader: showResponseHeader
+};
+
+},{"../Control.Apply":42,"../Data.Eq":140,"../Data.Generic":159,"../Data.HeytingAlgebra":162,"../Data.Maybe":204,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Unit":259,"../Prelude":278}],273:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Apply = require("../Control.Apply");
+var Data_Eq = require("../Data.Eq");
+var Data_Generic = require("../Data.Generic");
+var Data_Maybe = require("../Data.Maybe");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var Prelude = require("../Prelude");
+var StatusCode = function (x) {
+    return x;
+};
+var showStatusCode = new Data_Show.Show(function (v) {
+    return "(StatusCode " + (Data_Show.show(Data_Show.showInt)(v) + ")");
+});
+var genericStatusCode = new Data_Generic.Generic(function (v) {
+    if (v instanceof Data_Generic.SProd && (v.value0 === "Network.HTTP.StatusCode.StatusCode" && v.value1.length === 1)) {
+        return Control_Apply.apply(Data_Maybe.applyMaybe)(new Data_Maybe.Just(StatusCode))(Data_Generic.fromSpine(Data_Generic.genericInt)(v["value1"][0](Data_Unit.unit)));
+    };
+    return Data_Maybe.Nothing.value;
+}, function ($dollarq) {
+    return new Data_Generic.SigProd("Network.HTTP.StatusCode.StatusCode", [ {
+        sigConstructor: "Network.HTTP.StatusCode.StatusCode", 
+        sigValues: [ function ($dollarq1) {
+            return Data_Generic.toSignature(Data_Generic.genericInt)(Data_Generic.anyProxy);
+        } ]
+    } ]);
+}, function (v) {
+    return new Data_Generic.SProd("Network.HTTP.StatusCode.StatusCode", [ function ($dollarq) {
+        return Data_Generic.toSpine(Data_Generic.genericInt)(v);
+    } ]);
+});
+var eqStatusCode = new Data_Eq.Eq(function (v) {
+    return function (v1) {
+        return v === v1;
+    };
+});
+module.exports = {
+    StatusCode: StatusCode, 
+    genericStatusCode: genericStatusCode, 
+    eqStatusCode: eqStatusCode, 
+    showStatusCode: showStatusCode
+};
+
+},{"../Control.Apply":42,"../Data.Eq":140,"../Data.Generic":159,"../Data.Maybe":204,"../Data.Semigroup":237,"../Data.Show":241,"../Data.Unit":259,"../Prelude":278}],274:[function(require,module,exports){
+"use strict";
+
+// module Partial.Unsafe
+
+exports.unsafePartial = function (f) {
+  return f();
+};
+
+},{}],275:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var Partial = require("../Partial");
+var unsafePartialBecause = function (v) {
+    return function (x) {
+        return $foreign.unsafePartial(function (dictPartial) {
+            return x(dictPartial);
+        });
+    };
+};
+var unsafeCrashWith = function (msg) {
+    return $foreign.unsafePartial(function (dictPartial) {
+        return Partial.crashWith(dictPartial)(msg);
+    });
+};
+module.exports = {
+    unsafeCrashWith: unsafeCrashWith, 
+    unsafePartialBecause: unsafePartialBecause, 
+    unsafePartial: $foreign.unsafePartial
+};
+
+},{"../Partial":277,"./foreign":274}],276:[function(require,module,exports){
+"use strict";
+
+// module Partial
+
+exports.crashWith = function () {
+  return function (msg) {
+    throw new Error(msg);
+  };
+};
+
+},{}],277:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+var crash = function (dictPartial) {
+    return $foreign.crashWith(dictPartial)("Partial.crash: partial function");
+};
+module.exports = {
+    crash: crash, 
+    crashWith: $foreign.crashWith
+};
+
+},{"./foreign":276}],278:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Category = require("../Control.Category");
+var Control_Monad = require("../Control.Monad");
+var Control_Semigroupoid = require("../Control.Semigroupoid");
+var Data_Boolean = require("../Data.Boolean");
+var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
+var Data_Bounded = require("../Data.Bounded");
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_DivisionRing = require("../Data.DivisionRing");
+var Data_Eq = require("../Data.Eq");
+var Data_EuclideanRing = require("../Data.EuclideanRing");
+var Data_Field = require("../Data.Field");
+var Data_Function = require("../Data.Function");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_NaturalTransformation = require("../Data.NaturalTransformation");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Data_Unit = require("../Data.Unit");
+var Data_Void = require("../Data.Void");
+module.exports = {};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Category":47,"../Control.Monad":87,"../Control.Semigroupoid":93,"../Data.Boolean":130,"../Data.BooleanAlgebra":131,"../Data.Bounded":133,"../Data.CommutativeRing":134,"../Data.DivisionRing":137,"../Data.Eq":140,"../Data.EuclideanRing":142,"../Data.Field":143,"../Data.Function":151,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.NaturalTransformation":214,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Data.Unit":259,"../Data.Void":260}],279:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var TypeEquals = function (from, to) {
+    this.from = from;
+    this.to = to;
+};
+var to = function (dict) {
+    return dict.to;
+};
+var refl = new TypeEquals(function (a) {
+    return a;
+}, function (a) {
+    return a;
+});
+var from = function (dict) {
+    return dict.from;
+};
+module.exports = {
+    TypeEquals: TypeEquals, 
+    from: from, 
+    to: to, 
+    refl: refl
+};
+
+},{}],280:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var Control_Applicative = require("../Control.Applicative");
+var Control_Apply = require("../Control.Apply");
+var Control_Bind = require("../Control.Bind");
+var Control_Monad = require("../Control.Monad");
+var Data_BooleanAlgebra = require("../Data.BooleanAlgebra");
+var Data_Bounded = require("../Data.Bounded");
+var Data_CommutativeRing = require("../Data.CommutativeRing");
+var Data_Eq = require("../Data.Eq");
+var Data_Functor = require("../Data.Functor");
+var Data_HeytingAlgebra = require("../Data.HeytingAlgebra");
+var Data_Ord = require("../Data.Ord");
+var Data_Ordering = require("../Data.Ordering");
+var Data_Ring = require("../Data.Ring");
+var Data_Semigroup = require("../Data.Semigroup");
+var Data_Semiring = require("../Data.Semiring");
+var Data_Show = require("../Data.Show");
+var Prelude = require("../Prelude");
+var Proxy3 = (function () {
+    function Proxy3() {
+
+    };
+    Proxy3.value = new Proxy3();
+    return Proxy3;
+})();
+var Proxy2 = (function () {
+    function Proxy2() {
+
+    };
+    Proxy2.value = new Proxy2();
+    return Proxy2;
+})();
+var $$Proxy = (function () {
+    function $$Proxy() {
+
+    };
+    $$Proxy.value = new $$Proxy();
+    return $$Proxy;
+})();
+var showProxy3 = new Data_Show.Show(function (v) {
+    return "Proxy3";
+});
+var showProxy2 = new Data_Show.Show(function (v) {
+    return "Proxy2";
+});
+var showProxy = new Data_Show.Show(function (v) {
+    return "Proxy";
+});
+var semiringProxy3 = new Data_Semiring.Semiring(function (v) {
+    return function (v1) {
+        return Proxy3.value;
+    };
+}, function (v) {
+    return function (v1) {
+        return Proxy3.value;
+    };
+}, Proxy3.value, Proxy3.value);
+var semiringProxy2 = new Data_Semiring.Semiring(function (v) {
+    return function (v1) {
+        return Proxy2.value;
+    };
+}, function (v) {
+    return function (v1) {
+        return Proxy2.value;
+    };
+}, Proxy2.value, Proxy2.value);
+var semiringProxy = new Data_Semiring.Semiring(function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+}, function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+}, $$Proxy.value, $$Proxy.value);
+var semigroupProxy3 = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        return Proxy3.value;
+    };
+});
+var semigroupProxy2 = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        return Proxy2.value;
+    };
+});
+var semigroupProxy = new Data_Semigroup.Semigroup(function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+});
+var ringProxy3 = new Data_Ring.Ring(function () {
+    return semiringProxy3;
+}, function (v) {
+    return function (v1) {
+        return Proxy3.value;
+    };
+});
+var ringProxy2 = new Data_Ring.Ring(function () {
+    return semiringProxy2;
+}, function (v) {
+    return function (v1) {
+        return Proxy2.value;
+    };
+});
+var ringProxy = new Data_Ring.Ring(function () {
+    return semiringProxy;
+}, function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+});
+var heytingAlgebraProxy3 = new Data_HeytingAlgebra.HeytingAlgebra(function (v) {
+    return function (v1) {
+        return Proxy3.value;
+    };
+}, function (v) {
+    return function (v1) {
+        return Proxy3.value;
+    };
+}, Proxy3.value, function (v) {
+    return function (v1) {
+        return Proxy3.value;
+    };
+}, function (v) {
+    return Proxy3.value;
+}, Proxy3.value);
+var heytingAlgebraProxy2 = new Data_HeytingAlgebra.HeytingAlgebra(function (v) {
+    return function (v1) {
+        return Proxy2.value;
+    };
+}, function (v) {
+    return function (v1) {
+        return Proxy2.value;
+    };
+}, Proxy2.value, function (v) {
+    return function (v1) {
+        return Proxy2.value;
+    };
+}, function (v) {
+    return Proxy2.value;
+}, Proxy2.value);
+var heytingAlgebraProxy = new Data_HeytingAlgebra.HeytingAlgebra(function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+}, function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+}, $$Proxy.value, function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+}, function (v) {
+    return $$Proxy.value;
+}, $$Proxy.value);
+var functorProxy = new Data_Functor.Functor(function (f) {
+    return function (m) {
+        return $$Proxy.value;
+    };
+});
+var eqProxy3 = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        return true;
+    };
+});
+var ordProxy3 = new Data_Ord.Ord(function () {
+    return eqProxy3;
+}, function (x) {
+    return function (y) {
+        return Data_Ordering.EQ.value;
+    };
+});
+var eqProxy2 = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        return true;
+    };
+});
+var ordProxy2 = new Data_Ord.Ord(function () {
+    return eqProxy2;
+}, function (x) {
+    return function (y) {
+        return Data_Ordering.EQ.value;
+    };
+});
+var eqProxy = new Data_Eq.Eq(function (x) {
+    return function (y) {
+        return true;
+    };
+});
+var ordProxy = new Data_Ord.Ord(function () {
+    return eqProxy;
+}, function (x) {
+    return function (y) {
+        return Data_Ordering.EQ.value;
+    };
+});
+var discardProxy3 = new Control_Bind.Discard(function (dictBind) {
+    return Control_Bind.bind(dictBind);
+});
+var discardProxy2 = new Control_Bind.Discard(function (dictBind) {
+    return Control_Bind.bind(dictBind);
+});
+var discardProxy = new Control_Bind.Discard(function (dictBind) {
+    return Control_Bind.bind(dictBind);
+});
+var commutativeRingProxy3 = new Data_CommutativeRing.CommutativeRing(function () {
+    return ringProxy3;
+});
+var commutativeRingProxy2 = new Data_CommutativeRing.CommutativeRing(function () {
+    return ringProxy2;
+});
+var commutativeRingProxy = new Data_CommutativeRing.CommutativeRing(function () {
+    return ringProxy;
+});
+var boundedProxy3 = new Data_Bounded.Bounded(function () {
+    return ordProxy3;
+}, Proxy3.value, Proxy3.value);
+var boundedProxy2 = new Data_Bounded.Bounded(function () {
+    return ordProxy2;
+}, Proxy2.value, Proxy2.value);
+var boundedProxy = new Data_Bounded.Bounded(function () {
+    return ordProxy;
+}, $$Proxy.value, $$Proxy.value);
+var booleanAlgebraProxy3 = new Data_BooleanAlgebra.BooleanAlgebra(function () {
+    return heytingAlgebraProxy3;
+});
+var booleanAlgebraProxy2 = new Data_BooleanAlgebra.BooleanAlgebra(function () {
+    return heytingAlgebraProxy2;
+});
+var booleanAlgebraProxy = new Data_BooleanAlgebra.BooleanAlgebra(function () {
+    return heytingAlgebraProxy;
+});
+var applyProxy = new Control_Apply.Apply(function () {
+    return functorProxy;
+}, function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+});
+var bindProxy = new Control_Bind.Bind(function () {
+    return applyProxy;
+}, function (v) {
+    return function (v1) {
+        return $$Proxy.value;
+    };
+});
+var applicativeProxy = new Control_Applicative.Applicative(function () {
+    return applyProxy;
+}, function (v) {
+    return $$Proxy.value;
+});
+var monadProxy = new Control_Monad.Monad(function () {
+    return applicativeProxy;
+}, function () {
+    return bindProxy;
+});
+module.exports = {
+    "Proxy": $$Proxy, 
+    Proxy2: Proxy2, 
+    Proxy3: Proxy3, 
+    eqProxy: eqProxy, 
+    functorProxy: functorProxy, 
+    ordProxy: ordProxy, 
+    applicativeProxy: applicativeProxy, 
+    applyProxy: applyProxy, 
+    bindProxy: bindProxy, 
+    booleanAlgebraProxy: booleanAlgebraProxy, 
+    boundedProxy: boundedProxy, 
+    commutativeRingProxy: commutativeRingProxy, 
+    discardProxy: discardProxy, 
+    heytingAlgebraProxy: heytingAlgebraProxy, 
+    monadProxy: monadProxy, 
+    ringProxy: ringProxy, 
+    semigroupProxy: semigroupProxy, 
+    semiringProxy: semiringProxy, 
+    showProxy: showProxy, 
+    eqProxy2: eqProxy2, 
+    ordProxy2: ordProxy2, 
+    booleanAlgebraProxy2: booleanAlgebraProxy2, 
+    boundedProxy2: boundedProxy2, 
+    commutativeRingProxy2: commutativeRingProxy2, 
+    discardProxy2: discardProxy2, 
+    heytingAlgebraProxy2: heytingAlgebraProxy2, 
+    ringProxy2: ringProxy2, 
+    semigroupProxy2: semigroupProxy2, 
+    semiringProxy2: semiringProxy2, 
+    showProxy2: showProxy2, 
+    eqProxy3: eqProxy3, 
+    ordProxy3: ordProxy3, 
+    booleanAlgebraProxy3: booleanAlgebraProxy3, 
+    boundedProxy3: boundedProxy3, 
+    commutativeRingProxy3: commutativeRingProxy3, 
+    discardProxy3: discardProxy3, 
+    heytingAlgebraProxy3: heytingAlgebraProxy3, 
+    ringProxy3: ringProxy3, 
+    semigroupProxy3: semigroupProxy3, 
+    semiringProxy3: semiringProxy3, 
+    showProxy3: showProxy3
+};
+
+},{"../Control.Applicative":40,"../Control.Apply":42,"../Control.Bind":46,"../Control.Monad":87,"../Data.BooleanAlgebra":131,"../Data.Bounded":133,"../Data.CommutativeRing":134,"../Data.Eq":140,"../Data.Functor":157,"../Data.HeytingAlgebra":162,"../Data.Ord":222,"../Data.Ordering":223,"../Data.Ring":233,"../Data.Semigroup":237,"../Data.Semiring":239,"../Data.Show":241,"../Prelude":278}],281:[function(require,module,exports){
+"use strict";
+
+// module Unsafe.Coerce
+
+exports.unsafeCoerce = function (x) {
+  return x;
+};
+
+},{}],282:[function(require,module,exports){
+// Generated by purs version 0.11.4
+"use strict";
+var $foreign = require("./foreign");
+module.exports = {
+    unsafeCoerce: $foreign.unsafeCoerce
+};
+
+},{"./foreign":281}],283:[function(require,module,exports){
+require('Main').main();
+
+},{"Main":264}],284:[function(require,module,exports){
+// shim for using process in browser
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things.  But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals.  It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+function defaultSetTimout() {
+    throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout () {
+    throw new Error('clearTimeout has not been defined');
+}
+(function () {
+    try {
+        if (typeof setTimeout === 'function') {
+            cachedSetTimeout = setTimeout;
+        } else {
+            cachedSetTimeout = defaultSetTimout;
+        }
+    } catch (e) {
+        cachedSetTimeout = defaultSetTimout;
+    }
+    try {
+        if (typeof clearTimeout === 'function') {
+            cachedClearTimeout = clearTimeout;
+        } else {
+            cachedClearTimeout = defaultClearTimeout;
+        }
+    } catch (e) {
+        cachedClearTimeout = defaultClearTimeout;
+    }
+} ())
+function runTimeout(fun) {
+    if (cachedSetTimeout === setTimeout) {
+        //normal enviroments in sane situations
+        return setTimeout(fun, 0);
+    }
+    // if setTimeout wasn't available but was latter defined
+    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+        cachedSetTimeout = setTimeout;
+        return setTimeout(fun, 0);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedSetTimeout(fun, 0);
+    } catch(e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+            return cachedSetTimeout.call(null, fun, 0);
+        } catch(e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+            return cachedSetTimeout.call(this, fun, 0);
+        }
+    }
+
+
+}
+function runClearTimeout(marker) {
+    if (cachedClearTimeout === clearTimeout) {
+        //normal enviroments in sane situations
+        return clearTimeout(marker);
+    }
+    // if clearTimeout wasn't available but was latter defined
+    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+        cachedClearTimeout = clearTimeout;
+        return clearTimeout(marker);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedClearTimeout(marker);
+    } catch (e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
+            return cachedClearTimeout.call(null, marker);
+        } catch (e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+            return cachedClearTimeout.call(this, marker);
+        }
+    }
+
+
+
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+    if (!draining || !currentQueue) {
+        return;
+    }
+    draining = false;
+    if (currentQueue.length) {
+        queue = currentQueue.concat(queue);
+    } else {
+        queueIndex = -1;
+    }
+    if (queue.length) {
+        drainQueue();
+    }
+}
+
+function drainQueue() {
+    if (draining) {
+        return;
+    }
+    var timeout = runTimeout(cleanUpNextTick);
+    draining = true;
+
+    var len = queue.length;
+    while(len) {
+        currentQueue = queue;
+        queue = [];
+        while (++queueIndex < len) {
+            if (currentQueue) {
+                currentQueue[queueIndex].run();
+            }
+        }
+        queueIndex = -1;
+        len = queue.length;
+    }
+    currentQueue = null;
+    draining = false;
+    runClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+    var args = new Array(arguments.length - 1);
+    if (arguments.length > 1) {
+        for (var i = 1; i < arguments.length; i++) {
+            args[i - 1] = arguments[i];
+        }
+    }
+    queue.push(new Item(fun, args));
+    if (queue.length === 1 && !draining) {
+        runTimeout(drainQueue);
+    }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+    this.fun = fun;
+    this.array = array;
+}
+Item.prototype.run = function () {
+    this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
+
+process.listeners = function (name) { return [] }
+
+process.binding = function (name) {
+    throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+    throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
+
+},{}]},{},[283]);
diff --git a/yesod-auth-hmac-keccak.cabal b/yesod-auth-hmac-keccak.cabal
--- a/yesod-auth-hmac-keccak.cabal
+++ b/yesod-auth-hmac-keccak.cabal
@@ -2,7 +2,7 @@
 -- further documentation, see http://haskell.org/cabal/users-guide/
 
 name:                yesod-auth-hmac-keccak
-version:             0.0.0.2
+version:             0.0.0.3
 synopsis:            An account authentication plugin for yesod with encrypted
                      token transfer.
 description:         This authentication plugin for Yesod uses a challenge-response
@@ -36,12 +36,12 @@
                        Yesod.Auth.Message
                      , Yesod.Auth.Import
                      , Yesod.Auth.Types
-  other-modules:       Paths_yesod_auth_hmac_keccak
                      , Yesod.Auth.JsPath
+  other-modules:       Paths_yesod_auth_hmac_keccak
   -- other-extensions:    
   default-extensions:  OverloadedStrings
   ghc-options:         -Wall
-  build-depends:       base >=4.9 && <4.10
+  build-depends:       base >=4.9 && <4.11
                      , text
                      , bytestring
                      , aeson
