You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: algo.go
    path of file: ./repos/fzf/src/algo
    
    the code of the file until where you have to start completion: package algo

/*

Algorithm
---------

FuzzyMatchV1 finds the first "fuzzy" occurrence of the pattern within the given
text in O(n) time where n is the length of the text. Once the position of the
last character is located, it traverses backwards to see if there's a shorter
substring that matches the pattern.

    a_____b___abc__  To find "abc"
    *-----*-----*>   1. Forward scan
      
    
func asciiFuzzyIndex(input *util.Chars, pattern []rune, caseSensitive bool) int {
	// Can't determine
	if !input.IsBytes() {
		return 0
	}

	// Not possible
	if !isAscii(pattern) {
		return -1
	}

	firstIdx, idx := 0, 0
	for pidx := 0; pidx < len(pattern); pidx++ {
		idx = trySkip(input, caseSensitive, byte(pattern[pidx]), idx)
		if idx < 0 {
			return -1
		}
		if pidx == 0 && idx > 0 {
			// Step back to find the right bonus point
			firstIdx = idx - 1
		}
		idx++
	}
	return firstIdx
}