+string find_last_color_code(string s)
+{
+ float start, len, i, carets;
+ start = strstrofs(s, "^", 0);
+ if (start == -1) // no caret found
+ return "";
+ len = strlen(s)-1;
+ for(i = len; i >= start; --i)
+ {
+ if(substring(s, i, 1) != "^")
+ continue;
+
+ carets = 1;
+ while (i-carets >= start && substring(s, i-carets, 1) == "^")
+ ++carets;
+
+ // check if carets aren't all escaped
+ if (carets == 1 || mod(carets, 2) == 1) // first check is just an optimization
+ {
+ if(i+1 <= len)
+ if(strstrofs("0123456789", substring(s, i+1, 1), 0) >= 0)
+ return substring(s, i, 2);
+
+ if(i+4 <= len)
+ if(substring(s, i+1, 1) == "x")
+ if(strstrofs("0123456789abcdefABCDEF", substring(s, i+2, 1), 0) >= 0)
+ if(strstrofs("0123456789abcdefABCDEF", substring(s, i+3, 1), 0) >= 0)
+ if(strstrofs("0123456789abcdefABCDEF", substring(s, i+4, 1), 0) >= 0)
+ return substring(s, i, 5);
+ }
+ i -= carets; // this also skips one char before the carets
+ }
+
+ return "";
+}
+