define(function(require,exports,module){const _=require("thirdparty/lodash");function SearchResult(label){this.label=label}function findSpecialCharacters(str){var i,c,specials=[0],lastSegmentSpecialsIndex=0,lastWasLowerCase=!1;for(i=0;i=deadBranches[queryCounter]);i++)if(specials[i]0;){var item=result.pop();if(!item)return!1;if(queryCounter--,item instanceof SpecialMatch&&(specialsCounter--,item.index=query.length||queryCounter0&&(remainder=query.substring(0,extraCharacters),originalRemainder=originalQuery.substring(0,extraCharacters),query=query.substring(extraCharacters),originalQuery=originalQuery.substring(extraCharacters)),queryCounter=0;queryCounter=lastSegmentStart,currentRange.matched&¤tRange.includesLastSegment&&(DEBUG_SCORES&&(scoreDebug.lastSegment+=lastSegmentScore*LAST_SEGMENT_BOOST),score+=lastSegmentScore*LAST_SEGMENT_BOOST),currentRange.matched&&!currentRangeStartedOnSpecial&&(DEBUG_SCORES&&(scoreDebug.notStartingOnSpecial-=NOT_STARTING_ON_SPECIAL_PENALTY),score-=NOT_STARTING_ON_SPECIAL_PENALTY),ranges.push(currentRange)),lastMatchIndex+1lastSegmentStart}),currentRange=null,lastSegmentScore=0}var numConsecutive=0;function addMatch(match){var c=match.index,newPoints=0;if(DEBUG_SCORES&&(scoreDebug.match+=MATCH_POINTS),newPoints+=MATCH_POINTS,match.upper&&(DEBUG_SCORES&&(scoreDebug.upper+=UPPER_CASE_MATCH),newPoints+=UPPER_CASE_MATCH),c===lastSegmentStart&&(DEBUG_SCORES&&(scoreDebug.beginning+=BEGINNING_OF_NAME_POINTS),newPoints+=BEGINNING_OF_NAME_POINTS),score>0&&lastMatchIndex+1===c){c-numConsecutive===lastSegmentStart&&(DEBUG_SCORES&&(scoreDebug.beginning+=BEGINNING_OF_NAME_POINTS),newPoints+=BEGINNING_OF_NAME_POINTS);var boost=CONSECUTIVE_MATCHES_POINTS*++numConsecutive;currentRangeStartedOnSpecial&&(boost*=2),DEBUG_SCORES&&(scoreDebug.consecutive+=boost),newPoints+=boost}else numConsecutive=1;match instanceof SpecialMatch&&(DEBUG_SCORES&&(scoreDebug.special+=SPECIAL_POINTS),newPoints+=SPECIAL_POINTS),score+=newPoints,c>=lastSegmentStart&&(lastSegmentScore+=newPoints),(currentRange&&!currentRange.matched||c>lastMatchIndex+1)&&closeRangeGap(c),lastMatchIndex=c,currentRange?currentRange.text+=str[c]:(currentRange={text:str[c],matched:!0},currentRangeStartedOnSpecial=match instanceof SpecialMatch)}for(matchCounter=0;matchCounterquery.length&&result.stringRanges.push({text:str.substring(query.length),matched:!1,includesLastSegment:!0}),result}function _computeMatchingRanges(query="",searchString="",includeNonContiguous){let index=searchString.toLowerCase().indexOf(query.toLowerCase());return includeNonContiguous&&console.error("includeNonContiguous option is not supported in _computeMatchingRanges"),-1===index?null:0===index&&query.length===searchString.length?[{text:searchString,matched:!0}]:0===index?[{text:searchString.slice(0,query.length),matched:!0},{text:searchString.slice(query.length),matched:!1}]:index+query.length===searchString.length?[{text:searchString.slice(0,index),matched:!1},{text:searchString.slice(index),matched:!0}]:[{text:searchString.slice(0,index),matched:!1},{text:searchString.substring(index,index+query.length),matched:!0},{text:searchString.slice(index+query.length),matched:!1}]}function _codeHintsRelevanceSort(result,query,prefixListLower,maxResults,onlyContiguous){const queryLower=query.toLowerCase();if(!prefixListLower)return result;prefixListLower=prefixListLower.map(prefix=>prefix.toLowerCase());const filteredPrefixMapLower={};for(let prefixLower of prefixListLower)prefixLower.startsWith(queryLower)&&(filteredPrefixMapLower[prefixLower]=!0);const resultsWithPrefix={},startingWithResults=[],endingWithResults=[],contiguousResults=[],disjointResults=[];let resultItemLabelLower,fullMatchStartIndex,fullMatchIndexFromEnd;for(const resultItem of result)if(fullMatchIndexFromEnd=-1,-1!==(fullMatchStartIndex=(resultItemLabelLower=resultItem.label.toLowerCase()).indexOf(queryLower))&&(fullMatchIndexFromEnd=resultItemLabelLower.length-(fullMatchStartIndex+queryLower+1)),filteredPrefixMapLower[resultItemLabelLower]?(resultsWithPrefix[resultItemLabelLower]=resultItem,resultItem.matchGoodness=+Number.MAX_VALUE):0===fullMatchStartIndex?(startingWithResults.push(resultItem),resultItem.matchGoodness=+Number.MAX_VALUE):0===fullMatchIndexFromEnd||1===fullMatchIndexFromEnd?(endingWithResults.push(resultItem),resultItem.matchGoodness=+Number.MAX_VALUE):resultItemLabelLower.includes(queryLower)?(contiguousResults.push(resultItem),resultItem.matchGoodness=+Number.MAX_VALUE):disjointResults.push(resultItem),maxResults&&resultsWithPrefix.length===maxResults)break;const orderedResults=[];for(let prefixItemLower of prefixListLower)resultsWithPrefix[prefixItemLower]&&orderedResults.push(resultsWithPrefix[prefixItemLower]);let totalResultCount=orderedResults.length;function _mergeResults(resultArray){for(let resultItem of resultArray){if(maxResults&&totalResultCount>=maxResults)break;orderedResults.push(resultItem),totalResultCount++}}return _mergeResults(startingWithResults),_mergeResults(endingWithResults),_mergeResults(contiguousResults),onlyContiguous?orderedResults:(_mergeResults(disjointResults),orderedResults)}function stringMatch(str,query,options,special){var result;if(options=options||{},!query)return(result=new SearchResult(str)).matchGoodness=0,DEBUG_SCORES&&(result.scoreDebug={}),result.stringRanges=[{text:str,matched:!1,includesLastSegment:!0}],result;var queryLower=query.toLowerCase(),compareLower=str.toLowerCase(),lastSegmentStart,matchList;if(options.preferPrefixMatches&&(options.segmentedSearch=!1),options.preferPrefixMatches&&compareLower.substr(0,queryLower.length)===queryLower)return _prefixMatchResult(str,query);if(special||(special=findSpecialCharacters(str)),options.segmentedSearch?(lastSegmentStart=special.specials[special.lastSegmentSpecialsIndex],matchList=_wholeStringSearch(queryLower,compareLower,query,str,special.specials,special.lastSegmentSpecialsIndex)):(lastSegmentStart=0,matchList=_generateMatchList(queryLower,compareLower,query,str,special.specials,0)),matchList){var compareData=_computeRangesAndScore(matchList,str,lastSegmentStart);(result=new SearchResult(str)).stringRanges=compareData.ranges,result.matchGoodness=-1*compareData.matchGoodness,DEBUG_SCORES&&(result.scoreDebug=compareData.scoreDebug)}return result}function multiFieldSort(searchResults,fieldSpec){var comparisons;Array.isArray(fieldSpec)?comparisons=fieldSpec:(comparisons=[],_.forEach(fieldSpec,function(priority,key){comparisons[priority]=key})),searchResults.sort(function(a,b){var priority;for(priority=0;priorityvalueB)return 1}}return 0})}function basicMatchSort(searchResults){multiFieldSort(searchResults,{matchGoodness:0,label:1})}const codeHintsMatcherOptions={preferPrefixMatches:!0};function codeHintsSort(query,choices,options){let choice,results=[];options=options||{};for(let i=0;i