{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"window.jQuery\"","webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./node_modules/underscore/underscore.js","webpack:///./node_modules/backbone/backbone.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/game-info/widgets/openAlert.js","webpack:///./src/ui/enableDialog/index.js","webpack:///./src/widgets/ping.js","webpack:///./src/widgets/requireLogin.js","webpack:///./src/ui/Overlay/index.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack:///./src/apis/fetchHaoInfo.js","webpack:///./src/hao/renderHao/helpers.js","webpack:///./src/hao/bindHaoAction.js","webpack:///./src/hao/widgets/tab.js","webpack:///./src/hao/apis/ajaxTaoHao.js","webpack:///./src/index.js","webpack:///./src/assets/css/index.scss?d342","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./src/assets/css/index.scss","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/css-loader/dist/runtime/getUrl.js","webpack:///./src/assets/img/bg-overlay.jpg","webpack:///./src/assets/img/sprite.png","webpack:///./src/game-info/index.js","webpack:///./node_modules/@173/173js/lib/ui/preventEmptyHrefClick.js","webpack:///./src/game-info/sections/profile/index.js","webpack:///./src/game-info/sections/profile/voteCurrentGame/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/ui/Overlay/tmpl.handlebars","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./src/ui/createEnableOverlay.js","webpack:///./src/ui/enableDialog/tmpl.handlebars","webpack:///./src/game-info/sections/profile/voteCurrentGame/voteSuccessTmpl.handlebars","webpack:///./src/game-info/sections/profile/renderGameInfo/index.js","webpack:///./src/game-info/sections/profile/renderGameInfo/tmpl.handlebars","webpack:///./src/apis/fetchGameDetail.js","webpack:///./src/game-info/sections/profile/renderProfileRank/index.js","webpack:///./src/game-info/sections/profile/renderProfileRank/tmpl.handlebars","webpack:///./src/game-info/sections/profile/renderDownload/index.js","webpack:///./src/game-info/sections/profile/renderDownload/tmpl.handlebars","webpack:///./src/apis/ajaxGetTinyLink.js","webpack:///./src/widgets/getDownloadUrls.js","webpack:///./src/widgets/md5.js","webpack:///./src/hao/grabHao/index.js","webpack:///./src/hao/widgets/captcha.js","webpack:///./src/hao/grabHao/Dialog/index.js","webpack:///./src/hao/grabHao/Dialog/tmpl.handlebars","webpack:///./src/hao/taoHao/index.js","webpack:///./src/hao/taoHao/Dialog/index.js","webpack:///./src/hao/taoHao/Dialog/tmpl.handlebars","webpack:///./node_modules/@173/173js/lib/url.js","webpack:///./src/hao/index.js","webpack:///./src/hao/renderHao/index.js","webpack:///./src/hao/renderHao/tmpl_mobile.handlebars","webpack:///./src/hao/renderHao/tmpl.handlebars"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","jQuery","extend","indexOf","array","len","length","escapeExpression","string","toHTML","possible","test","replace","badChars","escapeChar","isEmpty","isArray","createFrame","frame","_parent","blockParams","params","ids","path","appendContextPath","contextPath","id","escape","chr","obj","arguments","toString","isFunction","Array","errorProps","Exception","message","node","loc","line","undefined","endLineNumber","column","endColumn","start","end","tmp","Error","constructor","this","idx","captureStackTrace","lineNumber","nop","root","self","global","previousUnderscore","_","ArrayProto","ObjProto","SymbolProto","push","slice","nativeIsArray","nativeKeys","keys","nativeCreate","Ctor","_wrapped","nodeType","VERSION","builtinIteratee","optimizeCb","func","context","argCount","index","collection","accumulator","apply","cb","iteratee","identity","isObject","matcher","Infinity","restArguments","startIndex","Math","max","rest","args","baseCreate","result","shallowProperty","has","deepGet","MAX_ARRAY_INDEX","pow","getLength","isArrayLike","each","forEach","map","collect","results","currentKey","createReduce","dir","reducer","memo","initial","reduce","foldl","inject","reduceRight","foldr","find","detect","predicate","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","contains","includes","include","item","fromIndex","guard","values","invoke","method","pluck","where","attrs","findWhere","computed","lastComputed","v","min","shuffle","sample","random","clone","last","rand","temp","sortBy","criteria","sort","left","right","a","b","group","behavior","partition","groupBy","indexBy","countBy","reStrSymbol","toArray","isString","match","size","pass","first","head","take","tail","drop","compact","Boolean","flatten","input","shallow","strict","output","isArguments","j","without","otherArrays","difference","uniq","unique","isSorted","isBoolean","seen","union","arrays","intersection","argsLength","unzip","zip","createPredicateIndexFinder","findLastIndex","sortedIndex","low","high","mid","floor","createIndexFinder","predicateFind","isNaN","lastIndexOf","range","stop","step","ceil","chunk","count","executeBound","sourceFunc","boundFunc","callingContext","TypeError","bound","callArgs","concat","partial","boundArgs","placeholder","position","bindAll","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","throttled","remaining","clearTimeout","trailing","cancel","debounce","immediate","debounced","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","collectNonEnumProps","nonEnumIdx","proto","prop","allKeys","mapObject","pairs","invert","functions","methods","names","createAssigner","keysFunc","defaults","source","extendOwn","assign","eq","deepEq","keyInObj","pick","omit","String","props","tap","interceptor","isMatch","aStack","bStack","type","className","valueOf","areArrays","aCtor","bCtor","pop","isEqual","isElement","nodelist","document","childNodes","Int8Array","isFinite","isSymbol","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","unescapeMap","createEscaper","escaper","join","testRegexp","RegExp","replaceRegexp","unescape","fallback","idCounter","uniqueId","prefix","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","template","text","settings","oldSettings","render","offset","variable","Function","e","data","argument","chain","instance","_chain","chainResult","mixin","toJSON","$","Backbone","previousBackbone","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","events","callback","opts","split","on","_events","onApi","ctx","listening","_listeners","interop","listenTo","_listenId","listeningTo","_listeningTo","Listening","error","tryCatchOn","handlers","off","offApi","listeners","stopListening","handler","_callback","cleanup","onceMap","listenToOnce","offer","trigger","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","listener","unbind","Model","attributes","preinitialize","cid","cidPrefix","parse","set","changed","initialize","validationError","idAttribute","sync","attr","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","_pending","clear","hasChanged","changedAttributes","diff","old","previousAttributes","fetch","model","success","resp","serverAttrs","wrapError","save","validate","isNew","patch","xhr","destroy","url","base","urlError","encodeURIComponent","isValid","Collection","models","comparator","_reset","reset","setOptions","add","remove","merge","addOptions","splice","insert","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","_removeReference","previousModels","unshift","shift","_byId","modelId","callbackOpts","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","event","prevId","$$iterator","iterator","kind","_collection","_kind","_index","next","done","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","selector","$el","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","undelegate","_createElement","createElement","_setAttributes","addUnderscoreMethods","Class","attribute","defaultVal","addMethod","modelMatcher","config","Base","mappings","methodMap","dataType","contentType","JSON","stringify","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","ajax","update","delete","read","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","route","isRegExp","_routeToRegExp","router","history","fragment","_extractParameters","execute","navigate","optional","exec","param","decodeURIComponent","History","checkUrl","location","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","charAt","getFragment","_usePushState","_wantsHashChange","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iframe","src","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","hash","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","removeEventListener","detachEvent","removeChild","clearInterval","decodedFragment","title","_updateHash","protoProps","staticProps","child","parent","__super__","factory","g","require","enableDialog","AlertView","content","html","createEnableOverlay","tmpl","types","MOBILE_GAME_DOWNLOADED_IN_ANDROID","MOBILE_GAME_DOWNLOADED_IN_IOS","OPEN_GAME_DOWNLOADED_QRCODE","DOWNLOAD_MOBILE_GAME_SIMULATOR","IOS_GAME_DOWNLOADED_IN_PC","ANDROID_GAME_DOWNLOADED_IN_PC","urlUtils","trackEventWithKey","hrefOrAction","_jc_ping","withCurrentHref","addParam","action","rNON_URL","trackEvent","eventType","trackPageview","applyTrackLink","currentTarget","trackOptions","is","applyTrackBlock","blockElement","applyBiClick","gameCode","applyTrackArea","areaElement","cate","mobileBinderTit","Passport","voteMobileBinderTit","isRequireMobileBind","markIsNoTopbarTrigger","requireMobileBind","getMobileStatus","isBinded","Dialog","showMobileBinder","ti","contents","css","newgameLoginSuccess","passportDialogEventBind","EVENTS","dialogClose","dialogType","defaultOption","mobileBindOn","isLoggedIn","show","cachedValue","hasRuned","doc","docElement","win","getScrollbarWidth","outer","visibility","width","msOverflowStyle","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","Overlay","appendTo","closable","setBody","addClass","klass","overlay","target","isEscKey","keyCode","removeClass","marginRight","getContentElement","scrollTop","scrollbarWidth","pnCyclePositionX","_interopRequireDefault","HandlebarsEnvironment","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","1","2","3","4","5","6","7","8","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","logger","log","registerHelper","fn","unregisterHelper","registerPartial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","hooks","level","lookupLevel","levelMap","toLowerCase","parseInt","console","_len","_key","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","properties","whitelist","_createNewLookupObject","createNewLookupObject","allowedProtoProperties","defaultValue","allowProtoPropertiesByDefault","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","protoAccessControl","propertyName","checkWhiteList","loggedProperties","newObj","_interopRequireWildcard","protoAccessControlForType","logUnexpecedPropertyAccessOnce","dfd","Deferred","haoInfo","DATASTORE","DATASTORELAB","currentHaoInfo","scriptCharset","resolve","fail","promise","tao_stock","stock","inverse","gift_flag","innerHTML","innerText","textContent","requireLogin","grabHao","taoHao","getGiftInfo","giftId","haoList","giftInfo","Number","gift_id","container","preventDefault","cotainer","tabNav","tabItem","click","siblings","err","pingjs","textArea","top","execCommand","alert","api","default","exported","locals","isOldIE","atob","getTarget","styleTarget","querySelector","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","media","sourceMap","references","updater","addStyle","insertStyleElement","nonce","setAttribute","textStore","replaceText","replacement","applyToSingletonTag","styleSheet","cssText","cssNode","createTextNode","applyToTag","removeAttribute","btoa","singleton","singletonCounter","styleIndex","removeStyleElement","lastIdentifiers","newList","newLastIdentifiers","_i","___CSS_LOADER_API_IMPORT___","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","useSourceMap","cssMapping","sourceMapping","base64","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","needQuotes","biKey","timeoutObj","worthTimer","worthCount","$worth","isWorth","per","voteCurrentGame","renderGameInfo","renderProfileRank","renderDownload","bindHaoAction","ued","section","pageInfo","gameDetail","getScript","hasClass","openAlert","voteSuccessTmpl","when","host","protocol","submitVoteInfo","voteResult","msg","webpackPolyfill","deprecate","paths","children","Handlebars","depth0","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","SafeString","VM","spec","inst","_exception","priorKey","ret","execIteration","field","newContext","it","conditional","includeZero","lookupProperty","_decoratorsInline2","_decoratorsInline","original","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","main","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","lookup","depths","lambda","invokePartial","resolvePartial","extendedOptions","compile","compilerOptions","indent","lines","programs","program","declaredBlockParams","programWrapper","wrapProgram","depth","mergeIfNeeded","common","nullContext","seal","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","helper","_internalWrapHelper","wrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","currentPartialBlock","partialBlock","prog","currentDepths","transformOptionsFn","$Handlebars","dialogTitle","view","handleCloseClicked","replaceWith","helperMissing","fetchHaoInfo","fetchGameDetail","currentGameDetail","gameName","game_name","article","gamecode","newgameCodes","new_game_codes","channelInfo","channel_info","showStar","star_level","starLevelPercent","showGiftButton","gift_info","showEngageButton","gift_count","is_off_line","haoButtonInfo","downloadInfo","download_info","dlPcUrl","downloadUrl","officialUrl","spInfoArr","sp_remark","sp_primary","rel_url","stack1","alias1","alias2","alias4","voteSection","fetchGameRankInfo","currentTopInfo","rankName","rankUrl","isOnlineGame","rank_type","info","rankNumber","rank_num","voteNumber","heats_num","hasVoteAct","voteActFlag","rankUnlessEmpty","renderRankView","GetDownloadUrls","showPopDownload","showSyCode","showPcClient","defaultBtUrl","officialDlUrl","transferUrl","ssid","dlSiteInfo","dataBiClick","sourceOfficial","pageNewgameCodes","newGameCodes","iOS","ios","Android","android","PC","pc","getUrls","urls","plat","iosInfo","androidInfo","steamInfo","isMinPrice","hasDiscount","onSale","curr_price","past_min_price","origin_price","release_time","substr","wegameInfo","sonkwoInfo","cubejoyInfo","xboxInfo","psnInfo","nsInfo","epicInfo","isTlsy","append","pandora","use","Qrcode","alias3","templateId","dtd","status","tinylinkUrl","md5","GetDownloadInfo","gameCodes","appId","appKey","getPlatformUrl","timestamp","sign","time","that","then","res1","res2","res3","raw","u","f","h","fromCharCode","charCodeAt","C","A","captcha","captchaRes","channel","tx_appid","appid","tx_ticket","ticket","tx_randstr","randstr","uid","cardNumber","TencentCaptcha","captchaObj","res","initCaptchaObj","tab","tao_time_hour","tao_time","ajaxTaoHao","isAjaxing","always","taoHaoAgain","rNonQuerystring","deparam","paramsArray","pair","paramName","paramValue","normalize","str","joined","getUrlCompontents","search","hashIndex","markIndex","resetParams","compontents","removeSearch","paramString","hasSameOrigin","originUrl","getRelativeUrl","getURLParameter","rQuestionMark","getURLParameters","renderHao","isMobile","navigator","userAgent"],"mappings":"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","file":"js/index.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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"//ue.17173cdn.com/a/module/zq-game-material/v1/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n","module.exports = window.jQuery;","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","// Underscore.js 1.9.2\n// https://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.2';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](https://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","// Backbone.js 1.4.0\n\n// (c) 2010-2019 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.4.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n create: 'POST',\n update: 'PUT',\n patch: 'PATCH',\n delete: 'DELETE',\n read: 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n","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 || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = 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","var Backbone = require('backbone')\n , Overlay = require('ui/Overlay')\n , enableDialog = require('ui/enableDialog')\n\nvar AlertView = Backbone.View.extend({\n initialize: function(options) {\n this.content = options.content\n this.html = options.html\n }\n, render: function() {\n this.$el.html(\n this.content\n ? $('
').text(this.content)\n : this.html\n )\n\n return this\n }\n})\n\nmodule.exports = function(options) {\n options = options || {}\n\n var View = enableDialog(AlertView, { title: options.title || '提示' })\n , alertView = new View(options)\n\n return alertView.render().open()\n}\n","var createEnableOverlay = require('ui/createEnableOverlay')\n , tmpl = require('./tmpl.handlebars')\n\nmodule.exports = createEnableOverlay(tmpl)\n","var types = {\n MOBILE_GAME_DOWNLOADED_IN_ANDROID: 'mEB3q2'\n, MOBILE_GAME_DOWNLOADED_IN_IOS: 'yyEfAv'\n, OPEN_GAME_DOWNLOADED_QRCODE: '7nQVju'\n, DOWNLOAD_MOBILE_GAME_SIMULATOR: '73UBVf'\n, IOS_GAME_DOWNLOADED_IN_PC: 'UZ77nm'\n, ANDROID_GAME_DOWNLOADED_IN_PC: 'I7b6na'\n}\n\nvar urlUtils = require('@173js/url')\n\nfunction trackEventWithKey(key, hrefOrAction, options) {\n var _jc_ping = window._jc_ping || [];\n options = options || {}\n\n if (options.withCurrentHref) {\n hrefOrAction = urlUtils.addParam(\n window.location.href, { action: hrefOrAction }\n )\n }\n\n _jc_ping.push([\n '_trackBlockClick'\n , key\n , hrefOrAction\n ])\n\n window._jc_ping = _jc_ping\n}\n\nvar rNON_URL = /^(#|javascript:)/\n , $ = require('jquery')\n\nmodule.exports = {\n trackEvent: function(eventType, href) {\n trackEventWithKey(types[eventType], href)\n }\n, trackEventWithKey: trackEventWithKey\n, trackPageview: function() {\n // See more: http://bi.local.17173.com/pages/viewpage.action?pageId=983282\n window._jc_ping = window._jc_ping || []\n _jc_ping.push(['_trackPageview'])\n }\n, applyTrackLink: function() {\n $('div[data-role=\"zq-global-hao\"], div[data-role=\"zq-global-game-info\"]').on('mousedown', 'a[data-track-link]', function(e) {\n //TODO: DRY\n var element = $(e.currentTarget)\n , hrefOrAction = element.attr('href')\n , key = element.data('track-link')\n , trackOptions = { withCurrentHref : false }\n\n if (rNON_URL.test(hrefOrAction)) {\n if (!element.is('[data-zgm-action]')) { return }\n hrefOrAction = element.data('zgm-action')\n trackOptions.withCurrentHref = true\n }\n\n trackEventWithKey(key, hrefOrAction, trackOptions)\n })\n }\n, applyTrackBlock: function() {\n $('[data-track-block]').each(function(index, blockElement) {\n blockElement = $(blockElement)\n var key = $(blockElement).data('track-block')\n\n blockElement.on('mousedown', 'a, .trackDiv', function(e) {\n var element = $(e.currentTarget)\n , hrefOrAction = element.attr('href') || element.attr('class')\n , trackOptions = { withCurrentHref : false }\n\n if (rNON_URL.test(hrefOrAction) || hrefOrAction.indexOf('trackDiv') != -1) {\n if (!element.is('[data-zgm-action]')) { return }\n hrefOrAction = element.data('zgm-action')\n trackOptions.withCurrentHref = true\n }\n\n trackEventWithKey(key, hrefOrAction, trackOptions)\n })\n })\n }\n, applyBiClick: function(gameCode) {\n window._jc_ping = window._jc_ping || [];\n _jc_ping.push([ '_trackBiClick', 'g_1_'+gameCode+'_gift-follow']);\n }\n, applyTrackArea: function() {\n $('[data-track-area]').each(function(index, areaElement) {\n areaElement = $(areaElement)\n var key = $(areaElement).data('track-area')\n\n window._jc_ping = window._jc_ping || [];\n _jc_ping.push([\n '_trackModuleArea',\n areaElement,\n key\n ]);\n })\n }\n}\n","var $ = require('jquery')\n\nmodule.exports = function requireLogin(callback, cate) {\n\n return function() {\n var Passport = window.Passport || {}\n , args = arguments\n , voteMobileBinderTit = '亲爱的玩家,您需要绑定手机号后才能给游戏投票哦~'\n , mobileBinderTit\n , isRequireMobileBind = false\n , markIsNoTopbarTrigger = true //标记是非Topbar登陆触发的Passport,用于事件隔离\n\n if (cate) {\n isRequireMobileBind = true\n }\n\n if (cate == 'vote') {\n mobileBinderTit = voteMobileBinderTit\n }\n\n function requireMobileBind() {\n Passport.getMobileStatus(function(isBinded){\n if (!isBinded) {\n //手机未绑定,弹出手机绑定弹窗\n Passport.Dialog.showMobileBinder();\n var ti = setInterval(function(){\n if($('#nut').contents().find('.gpp-tel-bind .pprt-bindMobile-el .gpp-tit').length){\n clearInterval(ti);\n $('#nut').contents().find('.gpp-tel-bind .pprt-bindMobile-el .gpp-tit').text(mobileBinderTit).css('line-height','22px');\n }\n },500);\n }else {\n //手机已绑定,去执行回调\n callback.apply(this, args)\n }\n });\n }\n\n function newgameLoginSuccess() {\n if (isRequireMobileBind) {\n requireMobileBind();\n return\n }\n //登陆成功,不需要手机绑定,去执行回调\n callback.apply(this, args)\n }\n\n if(typeof passportDialogEventBind === 'undefined'){\n Passport.on(Passport.EVENTS.dialogClose, function (events) {\n window.passportDialogEventBind = true; //防止多次绑定\n if (events.dialogType == 'login') {\n //关闭登录弹窗,取消绑定\n window.Passport.off('loginSuccess', newgameLoginSuccess)\n }\n if (events.dialogType == 'mobileBind') {\n if (markIsNoTopbarTrigger) { //事件隔离\n Passport.getMobileStatus(function(isBinded){\n if (isBinded) {\n //手机绑定成功,去操作\n callback.apply(this, args)\n }\n });\n }\n }\n });\n }\n\n if (Passport && Passport.defaultOption) {\n Passport.defaultOption.mobileBindOn=false\n }\n\n if(!Passport.isLoggedIn()){\n // 没有登陆\n Passport.off('loginSuccess', newgameLoginSuccess)\n Passport.Dialog.show()\n Passport.on('loginSuccess', newgameLoginSuccess)\n } else {\n // 有登陆\n if (isRequireMobileBind) {\n // 需要手机绑定\n requireMobileBind();\n } else {\n // 不需要手机绑定\n callback.apply(this, args)\n }\n }\n\n }\n}\n","var $ = require('jquery')\n , doc = $(document)\n , docElement = $('html')\n , tmpl = require('./tmpl.handlebars')\n , WIHTOUT_SCROLL_MARGIN_RIGHT = 0\n , body = $('body')\n , win = $(window)\n\nfunction cacheable(func) {\n var cachedValue\n , hasRuned = false\n\n return function() {\n if (!hasRuned) {\n hasRuned = true\n cachedValue = func()\n }\n return cachedValue\n }\n}\n\nfunction getScrollbarWidth() {\n // Copy from http://tinyurl.com/k2wj4cm\n var outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n outer.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n\n document.body.appendChild(outer);\n\n var widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = \"scroll\";\n\n // add innerdiv\n var inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n var widthWithScroll = inner.offsetWidth;\n\n // remove divs\n outer.parentNode.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\ngetScrollbarWidth = cacheable(getScrollbarWidth)\n\nfunction Overlay(opts) {\n this.opts = opts\n this.el = $(tmpl()).appendTo('body')\n this.body = this.el.find('.overlay-in')\n this.closable = opts.closable !== void 0\n ? !!opts.closable : true\n\n this.setBody()\n this.el.addClass(opts.klass)\n\n if (!this.closable) { return }\n\n var overlay = this\n doc.on('click.close', '.overlay-wrap', function(e) {\n if (e.target !== e.currentTarget) { return }\n overlay.close()\n })\n .on('keyup.close', function(e) {\n var tagName = e.target.tagName\n , isEscKey = e.keyCode === 27\n , isInputField = /input|textarea/i.test(tagName)\n\n if (!isInputField && isEscKey) {\n overlay.close()\n }\n })\n}\n\n$.extend(Overlay.prototype, {\n close: function(silent) {\n this.el.remove()\n docElement.removeClass('overlay-show')\n docElement.css({ marginRight: WIHTOUT_SCROLL_MARGIN_RIGHT })\n doc.off('.close')\n\n //XXX: dirty but work, fix windows 下侧边栏分享组件浮动\n body.find('.pn-float').css({ left: '50%' })\n body.find('.pn-cycle').css({ right: '10px' })\n return this\n }\n\n, getContentElement: function() {\n return this.el.find('.k-content')\n }\n\n, open: function() {\n this.scrollTop = doc.scrollTop()\n\n //XXX: dirty but work, fix windows 下侧边栏分享组件浮动\n body.find('.pn-float').css({ left: win.width() / 2 })\n\n docElement.addClass('overlay-show')\n var scrollbarWidth = getScrollbarWidth()\n docElement.css({ marginRight: scrollbarWidth })\n\n //fix windows\n var pnCyclePositionX = scrollbarWidth + 10\n body.find('.pn-cycle').css({ right: pnCyclePositionX })\n\n this.el.show()\n return this\n }\n\n, setBody: function(body) {\n body = body || this.opts.body\n this.body.html(body)\n return this\n }\n})\n\nmodule.exports = Overlay;\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.3';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy4zJztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=\n","var $ = require('jquery')\n , _ = require('underscore')\n \nmodule.exports = function fetchHaoInfo(gameCode) {\n var dfd = $.Deferred()\n var datastore = window.DATASTORE || window.DATASTORELAB || {},\n haoInfo = datastore['hao.giftlist'] || {},\n currentHaoInfo = haoInfo[gameCode] || {}\n\n if (_.isEmpty(haoInfo)) {\n // 获取发号信息接口未请求过\n $.ajax({\n url: '//d.17173cdn.com/hao/giftlist/js/' + gameCode + '.js',\n dataType: 'script',\n scriptCharset: 'utf-8',\n cache: true\n }).done(function() {\n var datastore = window.DATASTORE || window.DATASTORELAB || {},\n haoInfo = datastore['hao.giftlist'] || {},\n currentHaoInfo = haoInfo[gameCode] || {}\n \n dfd.resolve(currentHaoInfo)\n }).fail(function() {\n dfd.reject(false)\n })\n }else {\n // 获取发号信息接口请求过\n dfd.resolve(currentHaoInfo)\n }\n\n return dfd.promise()\n}","module.exports = {\n 'helpers': {\n // 有号\n 'if_hasStock': function(value, options) {\n if(value.tao_stock !== 0 || value.stock.split('%')[0] !== '0') {\n return options.fn(this);\n } else {\n return options.inverse(this);\n }\n },\n // 抢号库存不为 0\n 'if_grab': function(value, options) {\n if(value.stock.split('%')[0] > 0 ) {\n return options.fn(this);\n } else {\n return options.inverse(this);\n }\n },\n // 奖品标记是否为“珍稀”, gift_flag 为 1 表示为珍稀礼包\n 'if_rarity': function(value, options) {\n if(value.gift_flag === 1) {\n return options.fn(this);\n } else {\n return options.inverse(this);\n }\n },\n // html 解码\n 'htmlDecode': function(text){\n //1.首先动态创建一个容器标签元素,如DIV\n var temp = document.createElement(\"div\")\n //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)\n temp.innerHTML = text\n //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。\n var output = temp.innerText || temp.textContent\n temp = null\n return output\n }\n }\n}","var $ = require('jquery')\n , requireLogin = require('widgets/requireLogin')\n , grabHao = require('./grabHao')\n , taoHao = require('./taoHao')\n\nfunction getGiftInfo(giftId, haoList) {\n var giftInfo = null\n for(var i=0; i 恭喜您获得了\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"giftInfo\") : depth0)) != null ? lookupProperty(stack1,\"game_name\") : stack1), depth0))\n + \" \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"giftInfo\") : depth0)) != null ? lookupProperty(stack1,\"gift_name\") : stack1), depth0))\n + \" 该号 \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"giftInfo\") : depth0)) != null ? lookupProperty(stack1,\"tao_time_hour\") : stack1), depth0))\n + \"小时 后将进入淘号库,请尽快使用。 在 我的账号箱 中可查看抢号记录 快激活试试,看人品爆发了没