!function e(r,t,n){function a(i,u){if(!t[i]){if(!r[i]){var c="function"==typeof require&&require;if(!u&&c)return c(i,!0);if(o)return o(i,!0);var f=new Error("Cannot find module '"+i+"'");throw f.code="MODULE_NOT_FOUND",f}var d=t[i]={exports:{}};r[i][0].call(d.exports,function(e){var t=r[i][1][e];return a(t?t:e)},d,d.exports,e,r,t,n)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;ia||n===a&&t!==r)throw new Error("AI ERROR: It is not ai's turn!");if(a>n&&t===r)throw new Error("AI ERROR: Given board contains too few ai' moves");if(a-1>n)throw new Error("AI ERROR: Given board contains too few player' moves");if((0,d.isTerminated)(e))throw new Error("AI ERROR: Given board represents terminated game!")}function u(e){e.forEach(function(e){if("e"!==e&&"x"!==e&&"o"!==e)throw new Error("AI ERROR: board array contains invalid character !")})}function c(e,r){return e.reduce(function(e,t){return t===r?e+1:e},0)}function f(e){var r=[];return e.forEach(function(e){r.push(e.toLowerCase())}),r}Object.defineProperty(t,"__esModule",{value:!0}),t.getLowerCasedArray=t.validInvalidCharactersPresenceOnBoard=t.validBeingInvalidCharacter=t.validBoardGameState=t.validCharactersBeingSame=t.validBoardStructure=void 0;var d=e("./game");t.validBoardStructure=o,t.validCharactersBeingSame=a,t.validBoardGameState=i,t.validBeingInvalidCharacter=n,t.validInvalidCharactersPresenceOnBoard=u,t.getLowerCasedArray=f},{"./game":3}],6:[function(e,r,t){(function(r){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}var n=e("./ai"),a=t(n);r.AI=a.default}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./ai":2}],7:[function(e,r,t){"use strict";function n(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function a(e){return e&&e.__esModule?e:{default:e}}function o(e,r,t,n){var a=f.getStateOfGame(e);if("not-end"!=a){var i=new u.default((-1));return i.score=f.getGameScore(a,t,n),i}var c=[];return f.getAllMoves(e).forEach(function(a){var i=new u.default(a);i.board=f.getBoardAfterSimulatedMove(e,a,r),i.score=o(i.board,"x"===r?"o":"x",t,n+1).score,c.push(i)}),c.sort(r===t?d:l),c[0]}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var i=e("./action"),u=a(i),c=e("./game"),f=n(c),d=function(e,r){return r.score-e.score},l=function(e,r){return e.score-r.score}},{"./action":1,"./game":3}],8:[function(e,r,t){"use strict";function n(e,r){return e=e.toLowerCase(),(0,i.validBeingInvalidCharacter)(e,r),e}function a(e,r){var t=n(e,"ai");return(0,i.validCharactersBeingSame)(a,r),t}function o(e,r,t){(0,i.validBoardStructure)(e);var n=(0,i.getLowerCasedArray)(e);return(0,i.validInvalidCharactersPresenceOnBoard)(n),(0,i.validBoardGameState)(n,t,r),e}Object.defineProperty(t,"__esModule",{value:!0});var i=e("./low-level-valid");t.default={aiCharacter:function(e){return n(e.aiCharacter,"ai")},playerCharacter:function(e){return a(e.playerCharacter,e.aiCharacter)},startingCharacter:function(e){return n(e.startingCharacter,"starting")},board:function(e){return o(e.board,e.startingCharacter,e.aiCharacter)}}},{"./low-level-valid":5}],9:[function(e,r,t){"use strict";function n(e){for(var r=["x","o"],t=0;t