-
Notifications
You must be signed in to change notification settings - Fork 0
/
bundle.js.map
1 lines (1 loc) · 79.4 KB
/
bundle.js.map
1
{"version":3,"sources":["webpack:///webpack/bootstrap 1eaeb78f43416c02ef7e","webpack:///./lib/squares/square.js","webpack:///./lib/piece.js","webpack:///./lib/squares/anchor_square.js","webpack:///./lib/squares/relative_square.js","webpack:///./lib/squares/null_square.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./lib/pieces/i_piece.js","webpack:///./lib/pieces/t_piece.js","webpack:///./lib/board.js","webpack:///./node_modules/lodash/_shuffleSelf.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/isArray.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./lib/entry.js","webpack:///./lib/game.js","webpack:///./lib/pieces/create_pieces.js","webpack:///./lib/pieces/l_piece.js","webpack:///./lib/pieces/reverse_l_piece.js","webpack:///./lib/pieces/reverse_z_piece.js","webpack:///./lib/pieces/square_piece.js","webpack:///./lib/pieces/z_piece.js","webpack:///./node_modules/lodash/shuffle.js","webpack:///./node_modules/lodash/_arrayShuffle.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_baseRandom.js","webpack:///./node_modules/lodash/_baseShuffle.js","webpack:///./node_modules/lodash/values.js","webpack:///./node_modules/lodash/_baseValues.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isObject.js"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;AC7DA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;ACpDA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;;;;;;;;ACrJA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;AC7BA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AChBA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uGAAyC,eAAe;;AAExD,gHAAkD,eAAe;AACjE,gHAAkD,gBAAgB;AAClE,kHAAoD,gBAAgB;;AAEpE;;AAEA,mHAAqD,gBAAgB;AACrE,mHAAqD,eAAe;AACpE,qHAAuD,gBAAgB;;AAEvE;AACA;;AAEA,kHAAoD,eAAe;AACnE,kHAAoD,eAAe;AACnE,oHAAsD,gBAAgB;AACtE,mHAAqD,gBAAgB;;AAErE;AACA;;;AAGA;;AAEA,gFAA2B;AAC3B,6DAA6D;;AAE7D;AACA;;AAEA;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uGAAyC,eAAe;AACxD,gHAAkD,gBAAgB;AAClE,gHAAkD,eAAe;AACjE,kHAAoD,gBAAgB;;AAEpE;AACA;;AAEA,kHAAoD,gBAAgB;AACpE,kHAAoD,eAAe;AACnE,oHAAsD,eAAe;;AAErE;AACA;;AAEA,mHAAqD,gBAAgB;AACrE,mHAAqD,eAAe;AACpE,qHAAuD,eAAe;;AAEtE;AACA;;AAEA,iHAAmD,gBAAgB;AACnE,iHAAmD,eAAe;AAClE,mHAAqD,gBAAgB;;AAErE;AACA;;AAEA;AACA;;AAEA,gFAA2B;AAC3B,6DAA6D;;AAE7D;AACA;;AAEA;;;;;;;;;;AC9CA;AAAA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;;;;;;AC/NA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;;AAEA;;;;;;;ACLA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACRA;AACA;;AAEA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA,8EAAyB,gCAAgC;AACzD;AACA;AACA,CAAC;;;;;;;;;;;;;AClDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C,8BAA8B,kBAAkB;AAChD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;yDACA;AACA;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uGAAyC,eAAe;AACxD,gHAAkD,gBAAgB;AAClE,gHAAkD,eAAe;AACjE,kHAAoD,iBAAiB;;AAErE;AACA;;AAEA,kHAAoD,gBAAgB;AACpE,kHAAoD,eAAe;AACnE,oHAAsD,gBAAgB;;AAEtE;AACA;;AAEA,kHAAoD,eAAe;AACnE,kHAAoD,gBAAgB;AACpE,oHAAsD,eAAe;;AAErE;AACA;;AAEA,mHAAqD,gBAAgB;AACrE,mHAAqD,eAAe;AACpE,qHAAuD,gBAAgB;;AAEvE;AACA;;;AAGA;;AAEA,gFAA2B;AAC3B,6DAA6D;;AAE7D;AACA;;AAEA;;;;;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uGAAyC,eAAe;AACxD,gHAAkD,gBAAgB;AAClE,gHAAkD,eAAe;AACjE,kHAAoD,gBAAgB;;AAEpE;AACA;;AAEA,kHAAoD,gBAAgB;AACpE,kHAAoD,eAAe;AACnE,oHAAsD,eAAe;;AAErE;AACA;;AAEA,kHAAoD,eAAe;AACnE,kHAAoD,gBAAgB;AACpE,oHAAsD,gBAAgB;;AAEtE;AACA;;AAEA,mHAAqD,gBAAgB;AACrE,mHAAqD,eAAe;AACpE,qHAAuD,iBAAiB;;AAExE;AACA;;;AAGA;;AAEA,gFAA2B;AAC3B,6DAA6D;;AAE7D;AACA;;AAEA;;;;;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uGAAyC,eAAe;AACxD,gHAAkD,gBAAgB;AAClE,gHAAkD,eAAe;AACjE,kHAAoD,iBAAiB;;AAErE;AACA;;AAEA,kHAAoD,eAAe;AACnE,kHAAoD,eAAe;AACnE,oHAAsD,gBAAgB;;AAEtE;AACA;;AAEA,mHAAqD,gBAAgB;AACrE,mHAAqD,eAAe;AACpE,qHAAuD,eAAe;;AAEtE;AACA;;AAEA,iHAAmD,gBAAgB;AACnE,iHAAmD,gBAAgB;AACnE,mHAAqD,gBAAgB;;AAErE;AACA;;AAEA;AACA;;AAEA,gFAA2B;AAC3B,8DAA8D;;AAE9D;AACA;;AAEA;;;;;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uGAAyC,eAAe;AACxD,8GAAgD,gBAAgB;AAChE,8GAAgD,gBAAgB;AAChE,gHAAkD,iBAAiB;;AAEnE;;AAEA;;AAEA,gFAA2B;AAC3B,8DAA8D;;AAE9D;AACA;;AAEA;;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uGAAyC,eAAe;AACxD,gHAAkD,gBAAgB;AAClE,gHAAkD,gBAAgB;AAClE,kHAAoD,gBAAgB;;AAEpE;AACA;;AAEA,kHAAoD,eAAe;AACnE,kHAAoD,gBAAgB;AACpE,oHAAsD,eAAe;;AAErE;AACA;;AAEA,mHAAqD,eAAe;AACpE,mHAAqD,eAAe;AACpE,qHAAuD,gBAAgB;;AAEvE;AACA;;AAEA,iHAAmD,gBAAgB;AACnE,iHAAmD,iBAAiB;AACpE,mHAAqD,eAAe;;AAEpE;AACA;;AAEA;AACA;;AAEA,gFAA2B;AAC3B,6DAA6D;;AAE7D;AACA;;AAEA;;;;;;;AC9CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;ACpBA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3DA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;ACrBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 17);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1eaeb78f43416c02ef7e","const _defaultBoardSize = [250, 500]\n\nconst _defaults = {\n dimensions: [_defaultBoardSize[0] / 10,\n _defaultBoardSize[1] / 20],\n falling: _defaultBoardSize[0] / 10\n}\n//Can make these modular with regards to the size of canvas.\n\nclass Square{\n\n constructor(options){\n this.color = options.color\n this.gameCtx = options.gameCtx\n this.vel = options.vel //Velocity is squares per ms i.e. 20px per ms.\n this.dimensions = _defaults.dimensions\n }\n\n //NB: When a piece is no longer moving on the board, we will use\n // its static position on the grid, passed in from the board.\n draw(color, pos = this.pos(), ctx = this.gameCtx){\n pos = pos ? pos : this.pos()\n if(this.inBounds()){\n this.color = (color ? color : this.color)\n const drawingPos = this.cordsToPos(pos)\n ctx.fillStyle = this.color\n ctx.fillRect(drawingPos[0] + 1, drawingPos[1] + 1,\n this.dimensions[0] - 4, this.dimensions[1] - 4);\n }\n }\n\n clearRect(){\n const drawingCords = this.cordsToPos()\n this.gameCtx.clearRect(drawingCords[0], drawingCords[1],\n this.dimensions[0], this.dimensions[1])\n }\n\n inBounds(){\n return this.pos()[0] >= 0 && this.pos()[0] < 10\n && this.pos()[1] >= 0 && this.pos()[1] < 20\n }\n\n cordsToPos(pos = this.pos()){\n return [pos[0] * _defaults.falling, pos[1] * _defaults.falling]\n }\n\n atBottom(){\n return this.pos()[1] === 19\n }\n\n}\n\nexport default Square\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/squares/square.js\n// module id = 0\n// module chunks = 0","import Square from './squares/square.js'\nimport AnchorSquare from './squares/anchor_square.js'\n\nclass Piece{\n\n constructor(options){\n this.anchorSquare = options.anchorSquare\n this.src = options.src\n this.rotations = options.rotations\n this.currentRotationIdx = options.currentRotationIdx\n this.color = options.color\n this.vel = options.vel\n }\n\n squares(){\n let squares = []\n this.rotations.forEach((rotation) => {\n squares = squares.concat(rotation)\n })\n return squares\n }\n\n each(callback, args){\n this.currentRotation().forEach((square) => {\n callback.apply(square, args)\n })\n }\n\n currentRotation(){\n return this.rotations[this.currentRotationIdx]\n }\n\n draw(){\n this.each(Square.prototype.draw, [this.color])\n }\n\n clearRect(){\n this.each((Square.prototype.clearRect))\n }\n\n rotate(){\n this.currentRotationIdx = (this.currentRotationIdx + 1) %\n this.rotations.length\n }\n\n fallDown(){\n this.clearRect()\n if(!this.atBottom() &&\n !this.board.activePieceCollide(\"down\")){\n this.anchorSquare.fallDown()\n this.each(() => {\n this.draw()\n })\n }else{\n this.draw()\n }\n }\n\n handleLeftKeyPress(){\n this.clearRect()\n this.anchorSquare.moveLeft()\n if(this.inBounds() && !this.board.activePieceCollide()){\n this.each(() => {\n this.draw()\n })\n }else{\n this.anchorSquare.moveRight()\n this.draw()\n }\n }\n\n handleRightKeyPress(){\n this.clearRect()\n this.anchorSquare.moveRight()\n if(this.inBounds() && !this.board.activePieceCollide()){\n this.each(() => {\n this.draw()\n })\n }else{\n this.anchorSquare.moveLeft()\n this.draw()\n }\n }\n\n unRotate(){\n this.currentRotationIdx = (this.currentRotationIdx\n + this.rotations.length - 1) % this.rotations.length\n }\n\n handleUpKeyPress(){\n this.clearRect()\n this.rotate()\n if(this.inBounds() && !this.board.activePieceCollide()){\n this.each(() => {\n this.draw()\n })\n }else{\n this.wallKick() ? null : this.unRotate()\n }\n this.each(() => {\n this.draw()\n })\n }\n\n wallKick(){\n //Naively search for a position to move to; if are available on one side,\n //try the other side -- otherwise give up and return to original position.\n //NB: This naive way results in fewer computations than checking which side a collision is on.\n for(let i = 0; i < 2; i ++){\n if (this.positionAvailable()){\n this.anchorSquare.moveLeft()\n }else {\n return true\n }\n }\n\n for(let j = 0; j < 4; j++){\n if(this.positionAvailable()){\n this.anchorSquare.moveRight()\n }else {\n return true\n }\n }\n\n for(let q = 0; q < 2; q++){\n this.anchorSquare.moveLeft()\n }\n\n return false\n }\n\n positionAvailable(){\n return !this.inBounds() || this.board.activePieceCollide()\n }\n\n atBottom(){\n return this.currentRotation().some((square) => {\n return square.atBottom()\n })\n }\n\n inBounds(){\n return this.currentRotation().every((square) => {\n return square.inBounds()\n })\n }\n\n}\n\nexport default Piece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/piece.js\n// module id = 1\n// module chunks = 0","import Square from './square.js'\n\nclass AnchorSquare extends Square{\n constructor(options){\n super(options)\n this.position = options.center\n }\n\n shiftUp(){\n this.position[1] -= 1\n }\n\n fallDown(){\n this.position[1] += 1\n }\n\n moveLeft(){\n this.position[0] -= 1\n }\n\n moveRight(){\n this.position[0] += 1\n }\n\n pos(){\n return this.position\n }\n}\n\nexport default AnchorSquare\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/squares/anchor_square.js\n// module id = 2\n// module chunks = 0","import Square from './square.js'\n\nclass RelativeSquare extends Square{\n constructor(options){\n super(options)\n this.offset = options.offset\n this.anchorSquare = options.anchorSquare\n }\n\n pos(){\n const anchorPiecePosition = this.anchorSquare.pos()\n return [anchorPiecePosition[0] + this.offset[0],\n anchorPiecePosition[1] + this.offset[1]]\n }\n}\n\nexport default RelativeSquare\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/squares/relative_square.js\n// module id = 3\n// module chunks = 0","class NullSquare{\n\n constructor(){\n }\n\n draw(){\n }\n\n fallDown(){\n }\n\n clearRect(){\n }\n\n inBounds(){\n return true;\n }\n\n}\n\nconst nullSquareInstance = new NullSquare()\nObject.freeze(nullSquareInstance)\n\nexport default nullSquareInstance\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/squares/null_square.js\n// module id = 4\n// module chunks = 0","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGetTag.js\n// module id = 5\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObjectLike.js\n// module id = 6\n// module chunks = 0","import Square from '../squares/square.js'\nimport Piece from '../piece.js'\nimport AnchorSquare from '../squares/anchor_square.js'\nimport RelativeSquare from '../squares/relative_square.js'\nimport nullSquareInstance from '../squares/null_square.js'\n\nfunction createIPiece(gameCtx){\n\n const anchorSquare = new AnchorSquare({center: [4, 2]})\n\n const relativeSquareUpOne = new RelativeSquare({offset: [0, 1]})\n const relativeSquareUpTwo = new RelativeSquare({offset: [0, -1]})\n const relativeSquareUpThree = new RelativeSquare({offset: [0, -2]})\n\n const rotationOne = [anchorSquare, relativeSquareUpOne, relativeSquareUpTwo, relativeSquareUpThree]\n\n const relativeSquareRightOne = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareRightTwo = new RelativeSquare({offset: [1, 0]})\n const relativeSquareRightThree = new RelativeSquare({offset: [2, -0]})\n\n const rotationTwo = [anchorSquare, relativeSquareRightOne,\n relativeSquareRightTwo, relativeSquareRightThree]\n\n const relativeSquareDownOne = new RelativeSquare({offset: [1, 0]})\n const relativeSquareDownTwo = new RelativeSquare({offset: [1, 1]})\n const relativeSquareDownThree = new RelativeSquare({offset: [1, -2]})\n const relativeSquareDownFour = new RelativeSquare({offset: [1, -1]})\n\n const rotationThree = [relativeSquareDownOne, relativeSquareDownTwo,\n relativeSquareDownThree, relativeSquareDownFour]\n\n\n const rotations = [rotationOne, rotationTwo, rotationThree, rotationTwo]\n\n const piece = new Piece({rotations: rotations, currentRotationIdx: 0,\n vel: 500, anchorSquare: anchorSquare, color: \"#2FFFFF\"})\n\n return piece\n}\n\nexport default createIPiece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/i_piece.js\n// module id = 7\n// module chunks = 0","import Square from '../squares/square.js'\nimport Piece from '../piece.js'\nimport AnchorSquare from '../squares/anchor_square.js'\nimport RelativeSquare from '../squares/relative_square.js'\nimport nullSquareInstance from '../squares/null_square.js'\n\nfunction createTPiece(gameCtx){\n\n const anchorSquare = new AnchorSquare({center: [4, 1]})\n const relativeSquareOneUp = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoUp = new RelativeSquare({offset: [1, 0]})\n const relativeSquareThreeUp = new RelativeSquare({offset: [0, -1]})\n\n const rotationOne = [anchorSquare, relativeSquareOneUp,\n relativeSquareTwoUp, relativeSquareThreeUp]\n\n const relativeSquareOneDown = new RelativeSquare({offset: [0, -1]})\n const relativeSquareTwoDown = new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeDown = new RelativeSquare({offset: [1, 0]})\n\n const rotationTwo = [anchorSquare, relativeSquareOneDown,\n relativeSquareTwoDown, relativeSquareThreeDown]\n\n const relativeSquareOneRight = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoRight = new RelativeSquare({offset: [1, 0]})\n const relativeSquareThreeRight = new RelativeSquare({offset: [0, 1]})\n\n const rotationThree = [anchorSquare, relativeSquareOneRight,\n relativeSquareTwoRight, relativeSquareThreeRight]\n\n const relativeSquareOneLeft= new RelativeSquare({offset: [0, -1]})\n const relativeSquareTwoLeft= new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeLeft= new RelativeSquare({offset: [-1, 0]})\n\n const rotationFour = [anchorSquare, relativeSquareOneLeft,\n relativeSquareTwoLeft, relativeSquareThreeLeft]\n\n const rotations = [rotationOne, rotationTwo,\n rotationThree, rotationFour]\n\n const piece = new Piece({rotations: rotations, currentRotationIdx: 0,\n vel: 500, anchorSquare: anchorSquare, color: \"#8500FB\"})\n\n return piece\n}\n\nexport default createTPiece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/t_piece.js\n// module id = 8\n// module chunks = 0","const _defaultPieces = []\nimport nullSquareInstance from './squares/null_square.js'\nimport Piece from './piece.js'\nimport Square from './squares/square.js'\n\nconst _defaultBoardSize = [250, 500]\n\nclass Board{\n\n constructor(options){\n this.game = options.game\n this.velocity = options.velocity\n this.gameCtx = options.gameCtx\n this.scoreCtx = options.scoreCtx\n this.grid = []\n this.activePiece = null\n this.createNullBoard()\n }\n\n animate(){\n this.game.updateScore()\n this.activePiece.draw()\n this.animationId = window.setInterval(() => {\n this.activePiece.clearRect()\n this.activePiece.fallDown()\n this.activePiece.draw()\n }, this.velocity)\n\n this.checkStops = window.setInterval(() => {\n if(this.squareMustStop() && !this.stopping){\n this.stopping = true\n setTimeout(() => {\n this.stopping = false\n if(this.squareMustStop()){\n !this.game.restarting ? this.handleStoppedSquare() : null\n }\n }, 500)\n }\n }, 50)\n }\n\n handleStoppedSquare(){\n this.stopSquare()\n this.game.introducePiece()\n this.checkForRowClear()\n this.activePiece.draw()\n }\n\n squareMustStop(){\n return this.activePieceAtBottom() ||\n this.activePieceCollide(\"down\")\n }\n\n stopSquare(){\n this.cementActivePieceOnGrid()\n this.activePiece = null\n }\n\n cementActivePieceOnGrid(){\n this.activePiece.currentRotation().forEach((square) => {\n const position = square.pos();\n this.grid[position[1]][position[0]] = square\n })\n }\n\n activePieceCollide(direction){\n const rotation = this.activePiece.currentRotation()\n for(let i = 0; i < rotation.length; i++){\n const position = rotation[i].pos()\n let posX = position[1]\n let posY = position[0]\n if(posX < 0){\n continue\n }\n switch(direction){\n case(\"down\"):\n posX += 1\n break;\n }\n if (!(this.grid[posX][posY] ==\n nullSquareInstance)){\n return true\n }\n }\n\n return false\n }\n\n activePieceAtBottom(){\n return this.activePiece.atBottom()\n }\n\n activePieceInBounds(){\n return this.activePiece.inBounds()\n }\n\n createNullBoard(){\n this.grid = []\n for(let i = 0; i < 20; i++){\n const row = []\n for(let j = 0; j < 10; j++){\n row.push(nullSquareInstance)\n }\n this.grid.push(row)\n }\n }\n\n gameLost(){\n return this.activePieceCollide()\n }\n\n\n introducePiece(piece){\n this.activePiece = piece\n if(this.gameLost()){\n this.stopGame()\n }\n }\n\n allPiecesOffScreen(){\n return this.activePiece.currentRotation().every((square) => {\n return square.pos()[1] < 0\n })\n }\n\n stopGame(){\n this.game.restarting = true\n clearInterval(this.checkStops)\n clearInterval(this.animationId)\n $(\".hidden\").toggleClass(\"hidden visible\")\n while(this.activePieceCollide()){\n this.activePiece.anchorSquare.shiftUp()\n }\n this.activePiece.draw()\n }\n\n\n checkForRowClear(){\n const rowsToBeCleared = []\n this.grid.forEach((row, idx) => {\n this.rowClearable(row) ? rowsToBeCleared.push(idx) : null\n })\n if(rowsToBeCleared.length !== 0){\n this.clearRows(rowsToBeCleared)\n this.game.levelUp()\n this.game.updateScore()\n }\n }\n\n rowClearable(row){\n return row.every((piece) => {\n return piece !== nullSquareInstance\n })\n }\n\n clearRows(indeces){\n this.game.linesCleared += indeces.length\n this.clearCanvas()\n indeces.forEach((idx) => {\n this.clearRow(idx)\n })\n this.reDrawGrid()\n }\n\n clearRow(idx){\n this.grid.splice(idx, 1)\n const row = []\n for(let i = 0; i < 10; i++ ){\n row.push(nullSquareInstance)\n }\n this.grid.unshift(row)\n }\n\n reDrawGrid(){\n this.grid.forEach((row, i) => {\n row.forEach((square, j) => {\n if(square != nullSquareInstance){\n square.draw(null, [j, i])\n }\n })\n })\n }\n\n clearCanvas(idx){\n this.gameCtx.clearRect(0, 0, _defaultBoardSize[0],\n _defaultBoardSize[1])\n }\n\n handleKeyClicks(){\n return this.handleKeyPress = window.addEventListener(\"keydown\", (e) => {\n switch(e.keyCode){\n case 37:\n e.preventDefault()\n this.activePiece && this.game.playing ?\n this.activePiece.handleLeftKeyPress()\n : null\n break\n\n case 38:\n e.preventDefault()\n this.activePiece && this.game.playing ?\n this.activePiece.handleUpKeyPress()\n : null\n break\n\n case 39:\n e.preventDefault()\n this.activePiece && this.game.playing ?\n this.activePiece.handleRightKeyPress()\n : null\n break\n\n case 40:\n e.preventDefault()\n this.activePiece && this.game.playing ?\n this.activePiece.fallDown()\n : null\n break\n }\n })\n }\n}\n\nexport default Board\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/board.js\n// module id = 9\n// module chunks = 0","var baseRandom = require('./_baseRandom');\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nmodule.exports = shuffleSelf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_shuffleSelf.js\n// module id = 10\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Symbol.js\n// module id = 11\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_root.js\n// module id = 12\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_freeGlobal.js\n// module id = 13\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArray.js\n// module id = 14\n// module chunks = 0","module.exports = function(module) {\n\tif(!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif(!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 15\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isLength.js\n// module id = 16\n// module chunks = 0","import gameBoard from './pieces/i_piece.js'\nimport AnchorSquare from './squares/anchor_square.js'\nimport RelativeSquare from './squares/relative_square.js'\nimport createTPiece from './pieces/t_piece.js'\nimport Piece from './piece.js'\nimport Board from './board.js'\nimport Game from './game.js'\n\n\nconst createGrid = (gameCtx, nextPieceBgCtx) => {\n for(let i = 0; i < 500; i += 25){\n gameCtx.fillStyle = \"rgba(255, 255, 255, 0.1)\"\n gameCtx.fillRect(0, i, 300, 1);\n }\n for(let i = 0; i < 250; i+= 25){\n gameCtx.fillStyle = \"rgba(255, 255, 255, 0.1)\"\n gameCtx.fillRect(i, 0, 1, 600);\n }\n\n for(let i = 0; i < 100; i += 25){\n nextPieceBgCtx.fillStyle = \"rgba(255, 255, 255, 0.1)\"\n nextPieceBgCtx.fillRect(0, i, 300, 1);\n }\n for(let i = 0; i < 100; i+= 25){\n nextPieceBgCtx.fillStyle = \"rgba(255, 255, 255, 0.1)\"\n nextPieceBgCtx.fillRect(i, 0, 1, 600);\n }\n}\n\nwindow.addEventListener(\"load\", () => {\n const gameCanvas = document.getElementById(\"game-canvas\");\n const backgroundCanvas = document.getElementById(\"background-canvas\");\n const scoreCanvas = document.getElementById(\"score-level-canvas\");\n const nextPieceCanvas = document.getElementById(\"next-piece-canvas\")\n const nextPieceBgCanvas = document.getElementById(\"next-piece-background-canvas\")\n\n const backgroundgameCtx= backgroundCanvas.getContext(\"2d\");\n const scoreCtx = scoreCanvas.getContext(\"2d\")\n const nextPieceBgCtx = nextPieceBgCanvas.getContext(\"2d\")\n const nextPieceCtx = nextPieceCanvas.getContext(\"2d\")\n\n scoreCtx.font = \"40px Press Start 2P\"\n const gameCtx = gameCanvas.getContext(\"2d\");\n\n\n\n createGrid(backgroundgameCtx, nextPieceBgCtx)\n const game = new Game({gameCtx, scoreCtx, nextPieceCtx});\n game.updateScore()\n game.setup()\n})\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/entry.js\n// module id = 17\n// module chunks = 0","import Board from './board.js'\nimport Piece from './piece.js'\nimport createPieces from './pieces/create_pieces.js'\nimport shuffle from 'lodash/shuffle'\n\nconst _levelVelocities = [\n 850, 750, 650, 550, 500, 450, 400, 350, 325, 300,\n 250, 225, 200, 175, 150, 140, 130, 120, 110\n]\n\nclass Game{\n\n constructor(options){\n this.board = new Board({\n game: this,\n gameCtx: options.gameCtx,\n scoreCtx: options.scoreCtx,\n velocity: _levelVelocities[0]\n })\n this.level = 0\n this.linesCleared = 0\n this.playing = false\n this.nextPieceCtx = options.nextPieceCtx\n this.gameCtx = options.gameCtx\n this.scoreCtx = options.scoreCtx\n this.availablePieces = []\n this.sound = this.setupSound()\n }\n\n setupSound(){\n this.sound = document.createElement(\"audio\");\n this.sound.src = './music/tetris-gameboy.mp3';\n this.sound.looping = true;\n this.sound.setAttribute(\"preload\", \"auto\");\n this.sound.setAttribute(\"controls\", \"none\");\n this.sound.style.display = \"none\";\n document.body.appendChild(this.sound);\n return this.sound\n }\n\n toggleSound() {\n if(this.musicPlaying){\n this.sound.pause()\n this.musicPlaying = false\n }else{\n this.sound.play();\n this.musicPlaying = true\n }\n }\n\n updateScore(){\n this.scoreCtx.font = \"bold 14px Verdana\"\n this.scoreCtx.fillStyle = \"whitesmoke\"\n this.scoreCtx.clearRect(0, 0, 180, 284);\n this.scoreCtx.fillText(`${this.level + 1}`,5, 22);\n this.scoreCtx.fillText(`${this.linesCleared}`, 5, 47);\n }\n\n clearAnimations(){\n clearInterval(this.board.animationId)\n clearInterval(this.board.checkStops)\n }\n\n levelUp(){\n if(this.linesCleared >= (this.level + 1) * 5 ){\n this.level += 1\n this.board.velocity = _levelVelocities[this.level]\n this.clearAnimations()\n this.board.animate()\n }\n }\n\n setup(){\n this.keyPresses()\n }\n\n keyPresses(){\n window.addEventListener(\"keydown\", (e) => {\n switch(e.keyCode){\n case 13:\n !this.playing && !this.restarting ?\n this.startPlaying() : null\n break;\n case 77:\n this.toggleSound()\n break;\n case 83:\n !this.playing && !this.restarting ?\n this.startPlaying() : null\n break;\n case 82:\n this.playing ? this.restart() :\n null\n break;\n case 80:\n if(!this.playing){\n this.playing = true\n this.board.animate()\n }else{\n this.clearAnimations()\n this.playing = false\n }\n break;\n }\n })\n }\n\n startPlaying(){\n this.play()\n this.playing = true;\n }\n\n restart(){\n $(\".visible\").toggleClass(\"visible hidden\")\n this.restarting = true\n this.playing = false\n this.clearScore()\n this.clearAnimations()\n this.board.clearCanvas()\n this.board.createNullBoard()\n setTimeout(() => {\n this.playing = true\n this.introducePiece()\n this.board.activePiece.draw()\n this.board.velocity = _levelVelocities[this.level]\n this.board.animate()\n this.restarting = false\n }, 500)\n }\n\n clearScore(){\n this.level = 0\n this.linesCleared = 0\n }\n\n play(){\n if(!this.playing){\n this.createPieces()\n this.introducePiece()\n }\n this.boardKeyClicks = this.board.handleKeyClicks()\n this.board.animate()\n }\n\n introducePiece(){\n const randomPiece = this.randomPiece()\n this.board.introducePiece(randomPiece)\n this.availablePieces.length === 0\n ? this.createPieces()\n : null\n this.drawNextPiece(this.availablePieces[0])\n }\n\n drawNextPiece(piece){\n this.nextPieceCtx.clearRect(0, 0, 100, 100)\n const prevPosition = JSON.parse(JSON.stringify(piece.anchorSquare.position))\n piece.anchorSquare.position[0] = 2\n piece.anchorSquare.position[1] = 2\n piece.currentRotation().forEach((square) => {\n square.draw(piece.color, square.pos(), this.nextPieceCtx)\n })\n piece.anchorSquare.position = prevPosition\n }\n\n randomPiece(){\n const randomPiece = this.availablePieces[0]\n this.availablePieces.splice(0, 1)\n return randomPiece\n }\n\n createPieces(){\n for(let i = 0; i < 4; i++){\n createPieces.forEach((pieceConstructor) => {\n const piece = pieceConstructor(this.gameCtx)\n piece.board = this.board\n piece.squares().forEach((square) => {\n square.gameCtx = this.gameCtx\n square.anchorSquare = piece.anchorSquare\n })\n this.availablePieces.push(piece)\n })\n }\n this.availablePieces = shuffle(this.availablePieces)\n }\n}\n\nexport default Game\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/game.js\n// module id = 18\n// module chunks = 0","import createIPiece from './i_piece.js'\nimport createLPiece from './l_piece.js'\nimport createReverseLPiece from './reverse_l_piece.js'\nimport createReverseZPiece from './reverse_z_piece.js'\nimport createSquarePiece from './square_piece.js'\nimport createTPiece from './t_piece.js'\nimport createZPiece from './z_piece.js'\n\n\n// export default [createIPiece]\nexport default [createIPiece, createLPiece, createReverseLPiece,\n createReverseZPiece, createSquarePiece, createTPiece, createZPiece]\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/create_pieces.js\n// module id = 19\n// module chunks = 0","import Square from '../squares/square.js'\nimport Piece from '../piece.js'\nimport AnchorSquare from '../squares/anchor_square.js'\nimport RelativeSquare from '../squares/relative_square.js'\nimport nullSquareInstance from '../squares/null_square.js'\n\nfunction createLPiece(gameCtx){\n\n const anchorSquare = new AnchorSquare({center: [4, 1]})\n const relativeSquareOneUp = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoUp = new RelativeSquare({offset: [1, 0]})\n const relativeSquareThreeUp = new RelativeSquare({offset: [-1, -1]})\n\n const rotationOne = [anchorSquare, relativeSquareOneUp,\n relativeSquareTwoUp, relativeSquareThreeUp]\n\n const relativeSquareOneDown = new RelativeSquare({offset: [0, -1]})\n const relativeSquareTwoDown = new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeDown = new RelativeSquare({offset: [1, -1]})\n\n const rotationTwo = [anchorSquare, relativeSquareOneDown, relativeSquareTwoDown,\n relativeSquareThreeDown]\n\n const relativeSquareOneLeft = new RelativeSquare({offset: [1, 0]})\n const relativeSquareTwoLeft = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareThreeLeft = new RelativeSquare({offset: [1, 1]})\n\n const rotationThree = [anchorSquare, relativeSquareOneLeft, relativeSquareTwoLeft,\n relativeSquareThreeLeft]\n\n const relativeSquareOneRight = new RelativeSquare({offset: [0, -1]})\n const relativeSquareTwoRight = new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeRight = new RelativeSquare({offset: [-1, 1]})\n\n const rotationFour= [anchorSquare, relativeSquareOneRight, relativeSquareTwoRight,\n relativeSquareThreeRight]\n\n\n const rotations = [rotationOne, rotationTwo, rotationThree, rotationFour]\n\n const piece = new Piece({rotations: rotations, currentRotationIdx: 0,\n vel: 500, anchorSquare: anchorSquare, color: \"#FA980B\"})\n\n return piece\n}\n\nexport default createLPiece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/l_piece.js\n// module id = 20\n// module chunks = 0","import Square from '../squares/square.js'\nimport Piece from '../piece.js'\nimport AnchorSquare from '../squares/anchor_square.js'\nimport RelativeSquare from '../squares/relative_square.js'\nimport nullSquareInstance from '../squares/null_square.js'\n\nfunction createReverseLPiece(gameCtx){\n\n const anchorSquare = new AnchorSquare({center: [4, 1]})\n const relativeSquareOneUp = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoUp = new RelativeSquare({offset: [1, 0]})\n const relativeSquareThreeUp = new RelativeSquare({offset: [1, -1]})\n\n const rotationOne = [anchorSquare, relativeSquareOneUp,\n relativeSquareTwoUp, relativeSquareThreeUp]\n\n const relativeSquareOneDown = new RelativeSquare({offset: [0, -1]})\n const relativeSquareTwoDown = new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeDown = new RelativeSquare({offset: [1, 1]})\n\n const rotationTwo = [anchorSquare, relativeSquareOneDown, relativeSquareTwoDown,\n relativeSquareThreeDown]\n\n const relativeSquareOneLeft = new RelativeSquare({offset: [1, 0]})\n const relativeSquareTwoLeft = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareThreeLeft = new RelativeSquare({offset: [-1, 1]})\n\n const rotationThree = [anchorSquare, relativeSquareOneLeft, relativeSquareTwoLeft,\n relativeSquareThreeLeft]\n\n const relativeSquareOneRight = new RelativeSquare({offset: [0, -1]})\n const relativeSquareTwoRight = new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeRight = new RelativeSquare({offset: [-1, -1]})\n\n const rotationFour= [anchorSquare, relativeSquareOneRight, relativeSquareTwoRight,\n relativeSquareThreeRight]\n\n\n const rotations = [rotationOne, rotationTwo, rotationThree, rotationFour]\n\n const piece = new Piece({rotations: rotations, currentRotationIdx: 0,\n vel: 500, anchorSquare: anchorSquare, color: \"#1700FA\"})\n\n return piece\n}\n\nexport default createReverseLPiece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/reverse_l_piece.js\n// module id = 21\n// module chunks = 0","import Square from '../squares/square.js'\nimport Piece from '../piece.js'\nimport AnchorSquare from '../squares/anchor_square.js'\nimport RelativeSquare from '../squares/relative_square.js'\nimport nullSquareInstance from '../squares/null_square.js'\n\nfunction createReverseZPiece(gameCtx){\n\n const anchorSquare = new AnchorSquare({center: [4, 1]})\n const relativeSquareOneUp = new RelativeSquare({offset: [0, -1]})\n const relativeSquareTwoUp = new RelativeSquare({offset: [1, 0]})\n const relativeSquareThreeUp = new RelativeSquare({offset: [-1, -1]})\n\n const rotationOne = [anchorSquare, relativeSquareOneUp,\n relativeSquareTwoUp, relativeSquareThreeUp]\n\n const relativeSquareOneDown = new RelativeSquare({offset: [0, 1]})\n const relativeSquareTwoDown = new RelativeSquare({offset: [1, 0]})\n const relativeSquareThreeDown = new RelativeSquare({offset: [1, -1]})\n\n const rotationTwo = [anchorSquare, relativeSquareOneDown,\n relativeSquareTwoDown, relativeSquareThreeDown]\n\n const relativeSquareOneRight = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoRight = new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeRight = new RelativeSquare({offset: [1, 1]})\n\n const rotationThree = [anchorSquare, relativeSquareOneRight,\n relativeSquareTwoRight, relativeSquareThreeRight]\n\n const relativeSquareOneLeft= new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoLeft= new RelativeSquare({offset: [0, -1]})\n const relativeSquareThreeLeft= new RelativeSquare({offset: [-1, 1]})\n\n const rotationFour = [anchorSquare, relativeSquareOneLeft,\n relativeSquareTwoLeft, relativeSquareThreeLeft]\n\n const rotations = [rotationOne, rotationTwo,\n rotationThree, rotationFour]\n\n const piece = new Piece({rotations: rotations, currentRotationIdx: 0,\n vel: 500, anchorSquare: anchorSquare, color: \"#27FF09\" })\n\n return piece\n}\n\nexport default createReverseZPiece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/reverse_z_piece.js\n// module id = 22\n// module chunks = 0","import Square from '../squares/square.js'\nimport Piece from '../piece.js'\nimport AnchorSquare from '../squares/anchor_square.js'\nimport RelativeSquare from '../squares/relative_square.js'\nimport nullSquareInstance from '../squares/null_square.js'\n\nfunction createSquarePiece(gameCtx){\n\n const anchorSquare = new AnchorSquare({center: [4, 1]})\n const relativeSquareOne = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwo = new RelativeSquare({offset: [0, -1]})\n const relativeSquareThree = new RelativeSquare({offset: [-1, -1]})\n\n const rotationOne = [anchorSquare, relativeSquareOne, relativeSquareTwo, relativeSquareThree]\n\n const rotations = [rotationOne]\n\n const piece = new Piece({rotations: rotations, currentRotationIdx: 0,\n vel: 500, anchorSquare: anchorSquare, color: \"#F7FF1F\" })\n\n return piece\n}\n\nexport default createSquarePiece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/square_piece.js\n// module id = 23\n// module chunks = 0","import Square from '../squares/square.js'\nimport Piece from '../piece.js'\nimport AnchorSquare from '../squares/anchor_square.js'\nimport RelativeSquare from '../squares/relative_square.js'\nimport nullSquareInstance from '../squares/null_square.js'\n\nfunction createZPiece(gameCtx){\n\n const anchorSquare = new AnchorSquare({center: [4, 1]})\n const relativeSquareOneUp = new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoUp = new RelativeSquare({offset: [0, -1]})\n const relativeSquareThreeUp = new RelativeSquare({offset: [1, -1]})\n\n const rotationOne = [anchorSquare, relativeSquareOneUp,\n relativeSquareTwoUp, relativeSquareThreeUp]\n\n const relativeSquareOneDown = new RelativeSquare({offset: [1, 0]})\n const relativeSquareTwoDown = new RelativeSquare({offset: [0, -1]})\n const relativeSquareThreeDown = new RelativeSquare({offset: [1, 1]})\n\n const rotationTwo = [anchorSquare, relativeSquareOneDown,\n relativeSquareTwoDown, relativeSquareThreeDown]\n\n const relativeSquareOneRight = new RelativeSquare({offset: [1, 0]})\n const relativeSquareTwoRight = new RelativeSquare({offset: [0, 1]})\n const relativeSquareThreeRight = new RelativeSquare({offset: [-1, 1]})\n\n const rotationThree = [anchorSquare, relativeSquareOneRight,\n relativeSquareTwoRight, relativeSquareThreeRight]\n\n const relativeSquareOneLeft= new RelativeSquare({offset: [-1, 0]})\n const relativeSquareTwoLeft= new RelativeSquare({offset: [-1, -1]})\n const relativeSquareThreeLeft= new RelativeSquare({offset: [0, 1]})\n\n const rotationFour = [anchorSquare, relativeSquareOneLeft,\n relativeSquareTwoLeft, relativeSquareThreeLeft]\n\n const rotations = [rotationOne, rotationTwo,\n rotationThree, rotationFour]\n\n const piece = new Piece({rotations: rotations, currentRotationIdx: 0,\n vel: 500, anchorSquare: anchorSquare, color: \"#F80009\"})\n\n return piece\n}\n\nexport default createZPiece\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/pieces/z_piece.js\n// module id = 24\n// module chunks = 0","var arrayShuffle = require('./_arrayShuffle'),\n baseShuffle = require('./_baseShuffle'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nmodule.exports = shuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/shuffle.js\n// module id = 25\n// module chunks = 0","var copyArray = require('./_copyArray'),\n shuffleSelf = require('./_shuffleSelf');\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nmodule.exports = arrayShuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayShuffle.js\n// module id = 26\n// module chunks = 0","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_copyArray.js\n// module id = 27\n// module chunks = 0","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseRandom.js\n// module id = 28\n// module chunks = 0","var shuffleSelf = require('./_shuffleSelf'),\n values = require('./values');\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nmodule.exports = baseShuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseShuffle.js\n// module id = 29\n// module chunks = 0","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/values.js\n// module id = 30\n// module chunks = 0","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseValues.js\n// module id = 31\n// module chunks = 0","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayMap.js\n// module id = 32\n// module chunks = 0","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/keys.js\n// module id = 33\n// module chunks = 0","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayLikeKeys.js\n// module id = 34\n// module chunks = 0","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseTimes.js\n// module id = 35\n// module chunks = 0","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArguments.js\n// module id = 36\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsArguments.js\n// module id = 37\n// module chunks = 0","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 38\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getRawTag.js\n// module id = 39\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_objectToString.js\n// module id = 40\n// module chunks = 0","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isBuffer.js\n// module id = 41\n// module chunks = 0","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/stubFalse.js\n// module id = 42\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isIndex.js\n// module id = 43\n// module chunks = 0","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isTypedArray.js\n// module id = 44\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsTypedArray.js\n// module id = 45\n// module chunks = 0","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseUnary.js\n// module id = 46\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nodeUtil.js\n// module id = 47\n// module chunks = 0","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseKeys.js\n// module id = 48\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isPrototype.js\n// module id = 49\n// module chunks = 0","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeKeys.js\n// module id = 50\n// module chunks = 0","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_overArg.js\n// module id = 51\n// module chunks = 0","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArrayLike.js\n// module id = 52\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isFunction.js\n// module id = 53\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObject.js\n// module id = 54\n// module chunks = 0"],"sourceRoot":""}