Given two strings, I define their product as follows:
* If any of the two strings is empty, the product is the empty string.
* If the second string consists of a single character, the result is obtained by replacing every character of the first string that compares larger than that character with that character. For example, `"1234567" * "5" = "1234555"`
* If the second string consists of more than one character, the result is obtained by multiplying the first string with each one-letter substring and concatenating the results. For example, `s * "12" = s * "1" + s * "2"` where `+` denotes string concatenation.
The task is to write a program or function that takes two strings and returns or prints their product. It may be assumed that the input strings consist entirely of printable ASCII characters.
You are allowed to take the second string as first argument and the first string as second argument as long as you explicitly state it in your answer (and are consistent about it).
This is code golf, the shortest code wins.
Test cases:
```
"" * "" = ""
"" * "123" = ""
"12" * "" = ""
"2" * "3" = "2"
"5" * "4" = "4"
"//" * "///" = "//////"
"xxxx" * "xx" = "xxxxxxxx"
"12" * "123" = "111212"
"123" * "abc" = "123123123"
"abc" * "123" = "111222333"
"abc" * "abc" = "aaaabbabc"
```
<small>Note: While this task is inspired by a string multiplication question I encountered Somewhere Else a while ago, the algorithm used here is not the same as the algorithm in that other question.</small>