(function () {
  "use strict";

  window.embedInSandcastleTemplate = function (code, addExtraLine) {
    return (
      "function startup(Cesium) {\n" +
      "    'use strict';\n" +
      "//Sandcastle_Begin\n" +
      (addExtraLine ? "\n" : "") +
      code +
      "//Sandcastle_End\n" +
      "    Sandcastle.finishedLoading();\n" +
      "}\n" +
      "if (typeof Cesium !== 'undefined') {\n" +
      "    window.startupCalled = true;\n" +
      "    startup(Cesium);\n" +
      "}\n"
    );
  };
  window.decodeBase64Data = function (base64String, pako) {
    // data stored in the hash as:
    // Base64 encoded, raw DEFLATE compressed JSON array where index 0 is code, index 1 is html
    // restore padding
    while (base64String.length % 4 !== 0) {
      base64String += "=";
    }
    var jsonString = pako.inflate(atob(base64String), {
      raw: true,
      to: "string",
    });
    // we save a few bytes by omitting the leading [" and trailing "] since they are always the same
    jsonString = '["' + jsonString + '"]';
    var json = JSON.parse(jsonString);
    // index 0 is code, index 1 is html
    var code = json[0];
    var html = json[1];
    var baseHref = json[2];
    return {
      code: code,
      html: html,
      baseHref: baseHref,
    };
  };
})();
