<?xml version="1.0"?>
<ZopeData>
  <record id="1" aka="AAAAAAAAAAE=">
    <pickle>
      <global name="Web Script" module="erp5.portal_type"/>
    </pickle>
    <pickle>
      <dictionary>
        <item>
            <key> <string>_Access_contents_information_Permission</string> </key>
            <value>
              <tuple>
                <string>Anonymous</string>
                <string>Assignee</string>
                <string>Assignor</string>
                <string>Associate</string>
                <string>Auditor</string>
                <string>Manager</string>
                <string>Owner</string>
              </tuple>
            </value>
        </item>
        <item>
            <key> <string>_Add_portal_content_Permission</string> </key>
            <value>
              <tuple>
                <string>Assignee</string>
                <string>Assignor</string>
                <string>Manager</string>
              </tuple>
            </value>
        </item>
        <item>
            <key> <string>_Change_local_roles_Permission</string> </key>
            <value>
              <tuple>
                <string>Assignor</string>
                <string>Manager</string>
              </tuple>
            </value>
        </item>
        <item>
            <key> <string>_Modify_portal_content_Permission</string> </key>
            <value>
              <tuple>
                <string>Assignee</string>
                <string>Assignor</string>
                <string>Manager</string>
              </tuple>
            </value>
        </item>
        <item>
            <key> <string>_View_Permission</string> </key>
            <value>
              <tuple>
                <string>Anonymous</string>
                <string>Assignee</string>
                <string>Assignor</string>
                <string>Associate</string>
                <string>Auditor</string>
                <string>Manager</string>
                <string>Owner</string>
              </tuple>
            </value>
        </item>
        <item>
            <key> <string>categories</string> </key>
            <value>
              <tuple/>
            </value>
        </item>
        <item>
            <key> <string>content_md5</string> </key>
            <value>
              <none/>
            </value>
        </item>
        <item>
            <key> <string>default_reference</string> </key>
            <value> <string>slapos_parameter_form.js</string> </value>
        </item>
        <item>
            <key> <string>description</string> </key>
            <value>
              <none/>
            </value>
        </item>
        <item>
            <key> <string>id</string> </key>
            <value> <string>rjs_slapos_parameter_form_js</string> </value>
        </item>
        <item>
            <key> <string>language</string> </key>
            <value> <string>en</string> </value>
        </item>
        <item>
            <key> <string>portal_type</string> </key>
            <value> <string>Web Script</string> </value>
        </item>
        <item>
            <key> <string>short_title</string> </key>
            <value>
              <none/>
            </value>
        </item>
        <item>
            <key> <string>text_content</string> </key>
            <value> <string encoding="cdata"><![CDATA[

/*jslint nomen: true, maxlen: 200, indent: 2*/\n
/*global rJS, console, window, document, RSVP, loopEventListener, btoa, atob, $, XMLSerializer, jQuery, URI, vkbeautify */\n
\n
(function (window, document, rJS, loopEventListener, $, XMLSerializer, jQuery, vkbeautify) {\n
  "use strict";\n
\n
  var gk = rJS(window);\n
\n
  function jsonDictToParameterXML(json) {\n
    var parameter_id,\n
      xml_output = $($.parseXML(\'<?xml version="1.0" encoding="utf-8" ?><instance />\'));\n
    // Used by serialisation XML\n
    for (parameter_id in json) {\n
      if (json.hasOwnProperty(parameter_id)) {\n
        $(\'instance\', xml_output).append(\n
          $(\'<parameter />\', xml_output)\n
            .text(json[parameter_id])\n
              .attr({id: parameter_id})\n
        );\n
      }\n
    }\n
    return vkbeautify.xml(\n
      (new XMLSerializer()).serializeToString(xml_output.context)\n
    );\n
  }\n
\n
  function jsonDictToParameterJSONInXML(json) {\n
    var xml_output = $($.parseXML(\'<?xml version="1.0" encoding="utf-8" ?><instance />\'));\n
      // Used by serialisation XML\n
    $(\'instance\', xml_output).append(\n
      $(\'<parameter />\', xml_output)\n
          .text(vkbeautify.json(JSON.stringify(json)))\n
            .attr({id: "_"})\n
    );\n
    return vkbeautify.xml(\n
      (new XMLSerializer()).serializeToString(xml_output.context)\n
    );\n
  }\n
\n
  function render_selection(json_field, default_value) {\n
    var input = document.createElement("select"),\n
      option = document.createElement("option"),\n
      option_index,\n
      optionz;\n
    input.size = 1;\n
    option.value = "";\n
    if (default_value === undefined) {\n
      option.selected = "selected";\n
    }\n
    input.appendChild(option);\n
    for (option_index in json_field.enum) {\n
      if (json_field.enum.hasOwnProperty(option_index)) {\n
        optionz = document.createElement("option");\n
        optionz.value = json_field.enum[option_index];\n
        optionz.textContent = json_field.enum[option_index];\n
        if (json_field.enum[option_index] === default_value) {\n
          optionz.selected = "selected";\n
        }\n
        input.appendChild(optionz);\n
      }\n
    }\n
    return input;\n
  }\n
  \n
  function render_textarea(json_field, default_value) {\n
    var input = document.createElement("textarea");\n
    if (default_value !== undefined) {\n
      if (default_value instanceof Array) {\n
        input.value = default_value.join("\\n");\n
      } else {\n
        input.value = default_value;\n
      }\n
    }\n
    return input;\n
  }\n
\n
  function render_field(json_field, default_value) {\n
\n
    if (json_field.enum !== undefined) {\n
      return render_selection(json_field, default_value);\n
    }\n
\n
    if (json_field.type === "boolean") {\n
      json_field.enum = [true, false];\n
      return render_selection(json_field, default_value);\n
    }\n
\n
    if (json_field.type === "array") {\n
      return render_textarea(json_field, default_value);\n
    }\n
\n
    var input = document.createElement("input");\n
\n
    if (default_value !== undefined) {\n
      input.value = default_value;\n
    }\n
\n
    switch (json_field.type) {\n
    case "integer":\n
      input.type = "number";\n
      break;\n
    default:\n
      input.type = "text";\n
    }\n
\n
    return input;\n
  }\n
\n
  function render_subform(json_field, default_dict, root, path) {\n
    var div_input,\n
      key,\n
      div,\n
      label,\n
      input,\n
      default_value,\n
      default_div,\n
      span_error,\n
      span_info;\n
\n
    if (default_dict === undefined) {\n
      default_dict = {};\n
    }\n
\n
    if (path === undefined) {\n
      path = "/";\n
    }\n
\n
    if (json_field.patternProperties !== undefined) {\n
      if (json_field.patternProperties[\'.*\'] !== undefined) {\n
\n
        div = document.createElement("div");\n
        div.setAttribute("class", "subfield");\n
        div.title = json_field.description;\n
\n
        /* console.log(key); */\n
\n
        div_input = document.createElement("div");\n
\n
        div_input = document.createElement("div");\n
        div_input.setAttribute("class", "input");\n
\n
        input = document.createElement("input");\n
        input.type = "text";\n
        div_input.appendChild(input);\n
\n
        input = document.createElement("button");\n
        input.value = btoa(JSON.stringify(json_field.patternProperties[\'.*\']));\n
        input.setAttribute("class", "add-sub-form");\n
        input.type = "button";\n
        input.name = path;\n
        input.textContent = "Add";\n
        div_input.appendChild(input);\n
\n
        div.appendChild(div_input);\n
\n
        for (default_value in default_dict) {\n
          if (default_dict.hasOwnProperty(default_value)) {\n
            default_div = document.createElement("div");\n
            default_div.setAttribute("class", "slapos-parameter-dict-key");\n
            label = document.createElement("label");\n
            label.textContent = default_value;\n
            label.setAttribute("class", "slapos-parameter-dict-key");\n
            default_div.appendChild(label);\n
            default_div = render_subform(\n
              json_field.patternProperties[\'.*\'],\n
              default_dict[default_value],\n
              default_div,\n
              path + "/" + default_value);\n
            div.appendChild(default_div);\n
          }\n
        }\n
        root.appendChild(div);\n
\n
        return div;\n
      }\n
    }\n
\n
    for (key in json_field.properties) {\n
      if (json_field.properties.hasOwnProperty(key)) {\n
        div = document.createElement("div");\n
        div.setAttribute("class", "subfield");\n
        div.title = json_field.properties[key].description;\n
        /* console.log(key); */\n
        label = document.createElement("label");\n
        label.textContent = json_field.properties[key].title;\n
        div.appendChild(label);\n
        div_input = document.createElement("div");\n
        div_input.setAttribute("class", "input");\n
        if (json_field.properties[key].type === \'object\') {\n
          div_input = render_subform(json_field.properties[key],\n
            default_dict[key],\n
            div_input,\n
            path + "/" + key);\n
        } else {\n
          input = render_field(json_field.properties[key], default_dict[key]);\n
          input.name = path + "/" + key;\n
          input.setAttribute("class", "slapos-parameter");\n
          div_input.appendChild(input);\n
        }\n
        if (json_field.properties[key].default !== undefined) {\n
          span_info = document.createElement("span");\n
          span_info.textContent = \'(default = \' + json_field.properties[key].default + \')\';\n
          div_input.appendChild(span_info);\n
        }\n
        span_error = document.createElement("span");\n
        span_error.setAttribute("class", "error");\n
        div_input.appendChild(span_error);\n
        div.appendChild(div_input);\n
        root.appendChild(div);\n
      }\n
    }\n
\n
    return root;\n
  }\n
\n
  function getFormValuesAsJSONDict(element) {\n
    var json_dict = {},\n
      entry,\n
      multi_level_dict = {};\n
    $(element.querySelectorAll(".slapos-parameter")).each(function (key, input) {\n
      if (input.value !== "") {\n
        if (input.type === \'number\') {\n
          json_dict[input.name] = parseInt(input.value, 10);\n
        } else if (input.value === "true") {\n
          json_dict[input.name] = true;\n
        } else if (input.value === "false") {\n
          json_dict[input.name] = false;\n
        } else if (input.tagName === "TEXTAREA") {\n
          json_dict[input.name] = input.value.split(\'\\n\');\n
        } else {\n
          json_dict[input.name] = input.value;\n
        }\n
      }\n
    });\n
\n
    function convertOnMultiLevel(key, value, d) {\n
      var i,\n
        kk,\n
        key_list = key.split("/");\n
      for (i = 2; i < key_list.length; i += 1) {\n
        kk = key_list[i];\n
        if (i === key_list.length - 1) {\n
          d[kk] = value;\n
        } else {\n
          if (!d.hasOwnProperty(kk)) {\n
            d[kk] = {};\n
          }\n
          d = d[kk];\n
        }\n
      }\n
    }\n
\n
    for (entry in json_dict) {\n
      if (json_dict.hasOwnProperty(entry)) {\n
        convertOnMultiLevel(entry, json_dict[entry], multi_level_dict);\n
      }\n
    }\n
\n
    return multi_level_dict;\n
  }\n
\n
  function validateForm(gadget, json_url) {\n
    return gadget.processValidation(json_url);\n
  }\n
\n
  function collapseParameter(element) {\n
      $(element).parent().children("div").toggle(300);\n
      if ($(element).hasClass("slapos-⁠parameter-⁠dict-⁠key-⁠colapse")) {\n
        $(element).removeClass("slapos-⁠parameter-⁠dict-⁠key-⁠colapse");\n
      }\n
      else {\n
         $(element).addClass("slapos-⁠parameter-⁠dict-⁠key-⁠colapse");\n
      }\n
     return element;\n
  }\n
\n
  function addSubForm(element) {\n
    var subform_json = JSON.parse(atob(element.value)),\n
      input_text = element.parentNode.querySelector("input[type=\'text\']"),\n
      div = document.createElement("div"),\n
      label;\n
\n
    if (input_text.value === "") {\n
      return false;\n
    }\n
\n
    div.setAttribute("class", "slapos-parameter-dict-key");\n
    label = document.createElement("label");\n
    label.textContent = input_text.value;\n
    label.setAttribute("class", "slapos-parameter-dict-key");\n
    div.appendChild(label);\n
\n
    div = render_subform(subform_json, {}, div, element.name + "/" + input_text.value);\n
\n
    element.parentNode.parentNode.insertBefore(div, element.parentNode.parentNode.children[1]);\n
    // element.parentNode.parentNode.appendChild(div);\n
\n
    return div;\n
  }\n
\n
  function loadEventList(gadget) {\n
    var g = gadget,\n
      field_list = g.props.element.querySelectorAll(".slapos-parameter"),\n
      button_list = g.props.element.querySelectorAll(\'button.add-sub-form\'),\n
      label_list = g.props.element.querySelectorAll(\'label.slapos-parameter-dict-key\'),\n
      i,\n
      promise_list = [];\n
\n
    for (i = 0; i < field_list.length; i = i + 1) {\n
      promise_list.push(loopEventListener(\n
        field_list[i],\n
        \'change\',\n
        false,\n
        validateForm.bind(g, g, g.options.json_url)\n
      ));\n
    }\n
\n
    for (i = 0; i < button_list.length; i = i + 1) {\n
      promise_list.push(loopEventListener(\n
        button_list[i],\n
        \'click\',\n
        false,\n
        addSubForm.bind(g, button_list[i])\n
      ));\n
    }\n
\n
    for (i = 0; i < label_list.length; i = i + 1) {\n
      promise_list.push(loopEventListener(\n
        label_list[i],\n
        \'click\',\n
        false,\n
        collapseParameter.bind(g, label_list[i])\n
      ));\n
    }\n
\n
    return RSVP.all(promise_list);\n
  }\n
\n
  function getSoftwareTypeFromForm(element) {\n
    var input = element.querySelector(".slapos-software-type");\n
\n
    if (input !== undefined && input !== null) {\n
      return input.value;\n
    }\n
    return "";\n
  }\n
\n
  function getSerialisationTypeFromForm(element) {\n
    var input = element.querySelector(".slapos-serialisation-type");\n
\n
    if (input !== undefined && input !== null) {\n
      return input.value;\n
    }\n
    return "";\n
  }\n
\n
  gk.ready(function (g) {\n
    g.props = {};\n
    return g.getElement()\n
      .push(function (element) {\n
        g.props.element = element;\n
      });\n
  })\n
\n
    .declareMethod("loadJSONSchema", function (url) {\n
      return this.getDeclaredGadget(\'loadschema\')\n
        .push(function (gadget) {\n
          return gadget.loadJSONSchema(url);\n
        });\n
    })\n
\n
    .declareMethod("validateJSONForSoftwareType", function (schema_url, softwaretype, generated_json) {\n
      return this.getDeclaredGadget(\'loadschema\')\n
        .push(function (gadget) {\n
          return gadget.validateJSONForSoftwareType(schema_url, softwaretype, generated_json);\n
        });\n
    })\n
\n
    .declareMethod("loadSoftwareJSON", function (url) {\n
      return this.getDeclaredGadget(\'loadschema\')\n
        .push(function (gadget) {\n
          return gadget.loadSoftwareJSON(url);\n
        });\n
    })\n
\n
    .declareAcquiredMethod(\'pleaseRedirectMyHash\', \'pleaseRedirectMyHash\')\n
\n
    .declareMethod(\'processValidation\', function (json_url) {\n
      var g = this,\n
        software_type = getSoftwareTypeFromForm(g.props.element),\n
        json_dict = getFormValuesAsJSONDict(g.props.element),\n
        serialisation_type = getSerialisationTypeFromForm(g.props.element);\n
\n
      return g.validateJSONForSoftwareType(json_url, software_type, json_dict)\n
        .push(function (validation) {\n
          var error_index,\n
            parameter_hash_input = g.props.element.querySelectorAll(\'.parameter_hash_output\')[0],\n
            field_name,\n
            div,\n
            divm,\n
            missing_index,\n
            missing_field_name,\n
            xml_output;\n
\n
          $(g.props.element.querySelectorAll("span.error")).each(function (i, span) {\n
            span.textContent = "";\n
          });\n
\n
          $(g.props.element.querySelectorAll("div.error-input")).each(function (i, div) {\n
            div.setAttribute("class", "");\n
          });\n
          if (serialisation_type === "json-in-xml") {\n
            xml_output = jsonDictToParameterJSONInXML(json_dict);\n
          } else {\n
            xml_output = jsonDictToParameterXML(json_dict);\n
          }\n
          parameter_hash_input.value = btoa(xml_output);\n
          // console.log(parameter_hash_input.value);\n
          if (validation.valid) {\n
            return xml_output;\n
          }\n
          for (error_index in validation.errors) {\n
            if (validation.errors.hasOwnProperty(error_index)) {\n
              field_name = validation.errors[error_index].dataPath;\n
              div = $(".slapos-parameter[name=\'/" + field_name  + "\']")[0].parentNode;\n
              div.setAttribute("class", "slapos-parameter error-input");\n
              div.querySelector("span.error").textContent = validation.errors[error_index].message;\n
            }\n
          }\n
\n
          for (missing_index in validation.missing) {\n
            if (validation.missing.hasOwnProperty(missing_index)) {\n
              missing_field_name = validation.missing[missing_index].dataPath;\n
              divm = $(\'.slapos-parameter[name=/\' + missing_field_name  + "\']")[0].parentNode;\n
              divm.setAttribute("class", "error-input");\n
              divm.querySelector("span.error").textContent = validation.missing[missing_index].message;\n
            }\n
          }\n
          return "ERROR";\n
        });\n
    })\n
\n
    .declareMethod(\'renderParameterForm\', function (json_url, default_dict) {\n
\n
      var g = this;\n
      return g.loadJSONSchema(json_url)\n
        .push(function (json) {\n
          var fieldset_list = g.props.element.querySelectorAll(\'fieldset\'),\n
            fieldset = document.createElement("fieldset");\n
\n
          fieldset = render_subform(json, default_dict, fieldset);\n
          $(fieldset_list[1]).replaceWith(fieldset);\n
          return fieldset_list;\n
        });\n
    })\n
\n
    .declareMethod(\'renderFailoverTextArea\', function (content, error) {\n
      var g = this,\n
        div = document.createElement("div"),\n
        div_error = document.createElement("div"),\n
        span_error = document.createElement("span"),\n
        textarea = document.createElement("textarea"),\n
        fieldset = document.createElement("fieldset"),\n
        fieldset_list = g.props.element.querySelectorAll(\'fieldset\');\n
\n
      div.setAttribute("class", "field");\n
      textarea.setAttribute("rows", "10");\n
      textarea.setAttribute("cols", "80");\n
\n
      textarea.setAttribute("name", "field_your_instance_xml");\n
      textarea.textContent = content;\n
\n
      span_error.setAttribute("class", "error");\n
      span_error.textContent = "You got one error when loading json schema, so the form is not going to be rendered: " + error;\n
\n
      div_error.setAttribute("class", "error");\n
\n
      div.appendChild(textarea);\n
      div_error.appendChild(span_error);\n
      div.appendChild(textarea);\n
\n
      fieldset.appendChild(div);\n
      fieldset.appendChild(div_error);\n
\n
      fieldset_list[0].innerHTML = \'\';\n
      $(fieldset_list[1]).replaceWith(fieldset);\n
      fieldset_list[2].innerHTML = \'\';\n
\n
      return fieldset;\n
    })\n
    .declareMethod(\'render\', function (options) {\n
      if (options.json_url === undefined) {\n
        throw new Error("undefined json_url");\n
      }\n
      var g = this,\n
        softwaretype;\n
\n
      this.options = options;\n
\n
      function updateParameterForm(evt) {\n
        options.parameter.softwaretype = evt.srcElement.value;\n
        return g.render(options);\n
      }\n
\n
      return g.loadSoftwareJSON(g.options.json_url).push(function (json) {\n
        var option_index,\n
          option,\n
          option_selected = options.parameter.softwaretype,\n
          input = g.props.element.querySelector(\'select.slapos-software-type\'),\n
          s_input = g.props.element.querySelector(\'input.slapos-serialisation-type\');\n
\n
        if (input.children.length === 0) {\n
          for (option_index in json[\'software-type\']) {\n
            if (json[\'software-type\'].hasOwnProperty(option_index)) {\n
              option = document.createElement("option");\n
              option.value = option_index;\n
              option.textContent = json[\'software-type\'][option_index].title;\n
              // option.index = json[\'software-type\'][option_index].index;\n
\n
              if (option_selected === undefined) {\n
                option_selected = option_index;\n
              }\n
\n
              if (softwaretype === undefined) {\n
                softwaretype = option_selected;\n
              }\n
\n
              if (option_index === option_selected) {\n
                option.selected = "selected";\n
              }\n
              input.appendChild(option);\n
            }\n
          }\n
        }\n
\n
        if (softwaretype === undefined) {\n
          softwaretype = option_selected;\n
        }\n
        if (json[\'software-type\'][softwaretype] === undefined) {\n
          throw new Error("The sotware type is not part of the json (" + softwaretype + ")");\n
        }\n
\n
        if (json[\'software-type\'][softwaretype].serialisation !== undefined) {\n
          s_input.value = json[\'software-type\'][softwaretype].serialisation;\n
          options.serialisation = json[\'software-type\'][softwaretype].serialisation;\n
        } else {\n
          s_input.value = json.serialisation;\n
          options.serialisation = json.serialisation;\n
        }\n
\n
        return json[\'software-type\'][softwaretype].request;\n
      })\n
        .push(function (parameter_json_schema_url) {\n
          var parameter_dict = {}, json_url_uri, prefix, parameter_entry;\n
\n
          if (options.parameter.parameter_xml !== undefined) {\n
            if (options.serialisation === "json-in-xml") {\n
              parameter_entry = jQuery.parseXML(\n
                options.parameter.parameter_xml\n
              ).querySelector("parameter[id=\'_\']");\n
              if (parameter_entry !== null) {\n
                parameter_dict = JSON.parse(parameter_entry.textContent);\n
              }\n
            } else {\n
              $(jQuery.parseXML(options.parameter.parameter_xml)\n
                .querySelectorAll("parameter"))\n
                  .each(function (key, p) {\n
                  parameter_dict[p.id] = p.textContent;\n
                });\n
            }\n
          }\n
\n
          if (URI(parameter_json_schema_url).protocol() === "") {\n
            // URL is relative, turn into absolute\n
            json_url_uri = URI(options.json_url);\n
            prefix = json_url_uri.path().split("/");\n
            prefix.pop();\n
            prefix = options.json_url.split(json_url_uri.path())[0] + prefix.join("/");\n
            parameter_json_schema_url = prefix + "/" + parameter_json_schema_url;\n
          }\n
          return g.renderParameterForm(parameter_json_schema_url, parameter_dict);\n
        })\n
        .push(function () {\n
          var i, div_list = g.props.element.querySelectorAll(\'.slapos-parameter-dict-key > div\'),\n
            label_list = g.props.element.querySelectorAll(\'label.slapos-parameter-dict-key\');\n
\n
          console.log("Collapse paramaters");\n
\n
          for (i = 0; i < div_list.length; i = i + 1) {\n
             $(div_list[i]).hide();\n
         }\n
\n
          for (i = 0; i < label_list.length; i = i + 1) {\n
             $(label_list[i]).addClass("slapos-parameter-dict-key-colapse");\n
         }\n
          return g;\n
        })\n
        .push(function () {\n
          console.log("FINISHED TO RENDER, RETURNING THE GADGET");\n
          return g;\n
        })\n
\n
        .fail(function (error) {\n
          var parameter_xml = \'\';\n
          console.log(error.stack);\n
          if (g.options.parameter.parameter_hash !== undefined) {\n
            parameter_xml = atob(g.options.parameter.parameter_hash);\n
          }\n
          return g.renderFailoverTextArea(parameter_xml, error.toString())\n
            .push(function () {\n
              error = undefined;\n
              return g;\n
            });\n
        });\n
    })\n
    .declareService(function () {\n
      var g = this,\n
        element = g.props.element.getElementsByTagName(\'select\')[0];\n
\n
      if (element === undefined) {\n
        return true;\n
      }\n
\n
      function updateParameterForm(evt) {\n
        var e = g.props.element.getElementsByTagName(\'select\')[0];\n
\n
        if (e === undefined) {\n
          throw new Error("Select not found.");\n
        }\n
\n
        g.options.parameter.softwaretype = e.value;\n
        return g.render(g.options)\n
          .push(function () {\n
            return loadEventList(g);\n
          });\n
      }\n
\n
      return loopEventListener(\n
        element,\n
        \'change\',\n
        false,\n
        updateParameterForm.bind(g)\n
      );\n
    })\n
    .declareService(function () {\n
      return loadEventList(this);\n
    })\n
    .declareService(function () {\n
      var g = this;\n
      return g.processValidation(g.options.json_url)\n
        .fail(function (error) {\n
          var parameter_xml = \'\';\n
          console.log(error.stack);\n
          if (g.options.parameter.parameter_hash !== undefined) {\n
            parameter_xml = atob(g.options.parameter.parameter_hash);\n
          }\n
          return g.renderFailoverTextArea(parameter_xml, error.toString())\n
            .push(function () {\n
              error = undefined;\n
              return g;\n
            });\n
        });\n
    });\n
\n
}(window, document, rJS, loopEventListener, $, XMLSerializer, jQuery, vkbeautify));

]]></string> </value>
        </item>
        <item>
            <key> <string>title</string> </key>
            <value> <string>slapos_parameter_form.js</string> </value>
        </item>
        <item>
            <key> <string>version</string> </key>
            <value> <string>001</string> </value>
        </item>
        <item>
            <key> <string>workflow_history</string> </key>
            <value>
              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
            </value>
        </item>
      </dictionary>
    </pickle>
  </record>
  <record id="2" aka="AAAAAAAAAAI=">
    <pickle>
      <global name="PersistentMapping" module="Persistence.mapping"/>
    </pickle>
    <pickle>
      <dictionary>
        <item>
            <key> <string>data</string> </key>
            <value>
              <dictionary>
                <item>
                    <key> <string>document_publication_workflow</string> </key>
                    <value>
                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
                    </value>
                </item>
                <item>
                    <key> <string>edit_workflow</string> </key>
                    <value>
                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                    </value>
                </item>
                <item>
                    <key> <string>processing_status_workflow</string> </key>
                    <value>
                      <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
                    </value>
                </item>
              </dictionary>
            </value>
        </item>
      </dictionary>
    </pickle>
  </record>
  <record id="3" aka="AAAAAAAAAAM=">
    <pickle>
      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
    </pickle>
    <pickle>
      <tuple>
        <none/>
        <list>
          <dictionary>
            <item>
                <key> <string>action</string> </key>
                <value> <string>publish_alive</string> </value>
            </item>
            <item>
                <key> <string>actor</string> </key>
                <value> <string>zope</string> </value>
            </item>
            <item>
                <key> <string>comment</string> </key>
                <value> <string></string> </value>
            </item>
            <item>
                <key> <string>error_message</string> </key>
                <value> <string></string> </value>
            </item>
            <item>
                <key> <string>time</string> </key>
                <value>
                  <object>
                    <klass>
                      <global name="DateTime" module="DateTime.DateTime"/>
                    </klass>
                    <tuple>
                      <none/>
                    </tuple>
                    <state>
                      <tuple>
                        <float>1420555875.95</float>
                        <string>UTC</string>
                      </tuple>
                    </state>
                  </object>
                </value>
            </item>
            <item>
                <key> <string>validation_state</string> </key>
                <value> <string>published_alive</string> </value>
            </item>
          </dictionary>
        </list>
      </tuple>
    </pickle>
  </record>
  <record id="4" aka="AAAAAAAAAAQ=">
    <pickle>
      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
    </pickle>
    <pickle>
      <tuple>
        <none/>
        <list>
          <dictionary>
            <item>
                <key> <string>action</string> </key>
                <value> <string>edit</string> </value>
            </item>
            <item>
                <key> <string>actor</string> </key>
                <value> <string>slapos-admin</string> </value>
            </item>
            <item>
                <key> <string>comment</string> </key>
                <value>
                  <none/>
                </value>
            </item>
            <item>
                <key> <string>error_message</string> </key>
                <value> <string></string> </value>
            </item>
            <item>
                <key> <string>serial</string> </key>
                <value> <string>943.22522.16130.42513</string> </value>
            </item>
            <item>
                <key> <string>state</string> </key>
                <value> <string>current</string> </value>
            </item>
            <item>
                <key> <string>time</string> </key>
                <value>
                  <object>
                    <klass>
                      <global name="DateTime" module="DateTime.DateTime"/>
                    </klass>
                    <tuple>
                      <none/>
                    </tuple>
                    <state>
                      <tuple>
                        <float>1432912068.83</float>
                        <string>UTC</string>
                      </tuple>
                    </state>
                  </object>
                </value>
            </item>
          </dictionary>
        </list>
      </tuple>
    </pickle>
  </record>
  <record id="5" aka="AAAAAAAAAAU=">
    <pickle>
      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
    </pickle>
    <pickle>
      <tuple>
        <none/>
        <list>
          <dictionary>
            <item>
                <key> <string>action</string> </key>
                <value> <string>detect_converted_file</string> </value>
            </item>
            <item>
                <key> <string>actor</string> </key>
                <value> <string>zope</string> </value>
            </item>
            <item>
                <key> <string>comment</string> </key>
                <value> <string></string> </value>
            </item>
            <item>
                <key> <string>error_message</string> </key>
                <value> <string></string> </value>
            </item>
            <item>
                <key> <string>external_processing_state</string> </key>
                <value> <string>converted</string> </value>
            </item>
            <item>
                <key> <string>serial</string> </key>
                <value> <string>0.0.0.0</string> </value>
            </item>
            <item>
                <key> <string>time</string> </key>
                <value>
                  <object>
                    <klass>
                      <global name="DateTime" module="DateTime.DateTime"/>
                    </klass>
                    <tuple>
                      <none/>
                    </tuple>
                    <state>
                      <tuple>
                        <float>1420555828.84</float>
                        <string>UTC</string>
                      </tuple>
                    </state>
                  </object>
                </value>
            </item>
          </dictionary>
        </list>
      </tuple>
    </pickle>
  </record>
</ZopeData>
