| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- "use strict";
 
- function dedent(strings) {
 
-   var raw = void 0;
 
-   if (typeof strings === "string") {
 
-     // dedent can be used as a plain function
 
-     raw = [strings];
 
-   } else {
 
-     raw = strings.raw;
 
-   }
 
-   // first, perform interpolation
 
-   var result = "";
 
-   for (var i = 0; i < raw.length; i++) {
 
-     result += raw[i].
 
-     // join lines when there is a suppressed newline
 
-     replace(/\\\n[ \t]*/g, "").
 
-     // handle escaped backticks
 
-     replace(/\\`/g, "`");
 
-     if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) {
 
-       result += arguments.length <= i + 1 ? undefined : arguments[i + 1];
 
-     }
 
-   }
 
-   // now strip indentation
 
-   var lines = result.split("\n");
 
-   var mindent = null;
 
-   lines.forEach(function (l) {
 
-     var m = l.match(/^(\s+)\S+/);
 
-     if (m) {
 
-       var indent = m[1].length;
 
-       if (!mindent) {
 
-         // this is the first indented line
 
-         mindent = indent;
 
-       } else {
 
-         mindent = Math.min(mindent, indent);
 
-       }
 
-     }
 
-   });
 
-   if (mindent !== null) {
 
-     result = lines.map(function (l) {
 
-       return l[0] === " " ? l.slice(mindent) : l;
 
-     }).join("\n");
 
-   }
 
-   // dedent eats leading and trailing whitespace too
 
-   result = result.trim();
 
-   // handle escaped newlines at the end to ensure they don't get stripped too
 
-   return result.replace(/\\n/g, "\n");
 
- }
 
- if (typeof module !== "undefined") {
 
-   module.exports = dedent;
 
- }
 
 
  |