
{
  "origin": "8600b043320dbf667abd29db829273d3",
  "innernodes": {
    "68511713-542d-471a-aa4e-84663f9227bc": {
      "_id": "68511713-542d-471a-aa4e-84663f9227bc",
      "passwordExpiryTime": 5,
      "_type": {
        "_id": "OneTimePasswordCollectorDecisionNode",
        "name": "OTP Collector Decision",
        "collection": true
      },
      "_outcomes": [
        {
          "id": "true",
          "displayName": "True"
        },
        {
          "id": "false",
          "displayName": "False"
        }
      ]
    }
  },
  "nodes": {
    "137f7944-00fa-4060-a408-bc89a98496ca": {
      "_id": "137f7944-00fa-4060-a408-bc89a98496ca",
      "identifier": "userName",
      "identityAttribute": "userName",
      "_type": {
        "_id": "IdentifyExistingUserNode",
        "name": "Identify Existing User",
        "collection": true
      },
      "_outcomes": [
        {
          "id": "true",
          "displayName": "True"
        },
        {
          "id": "false",
          "displayName": "False"
        }
      ]
    },
    "460244c1-516c-4863-8a8f-7ec34a5cc139": {
      "_id": "460244c1-516c-4863-8a8f-7ec34a5cc139",
      "inputs": [
        "*"
      ],
      "outcomes": [
        "sent",
        "failed"
      ],
      "outputs": [
        "*"
      ],
      "script": "91554b10-79a5-4aa8-aca1-59481a734c19",
      "_type": {
        "_id": "ScriptedDecisionNode",
        "name": "Scripted Decision",
        "collection": true
      },
      "_outcomes": [
        {
          "id": "sent",
          "displayName": "sent"
        },
        {
          "id": "failed",
          "displayName": "failed"
        }
      ]
    },
    "91e284c9-7b2a-418f-b667-ba47f229ced8": {
      "_id": "91e284c9-7b2a-418f-b667-ba47f229ced8",
      "nodes": [
        {
          "_id": "68511713-542d-471a-aa4e-84663f9227bc",
          "nodeType": "OneTimePasswordCollectorDecisionNode",
          "displayName": "Validate OTP"
        }
      ],
      "pageHeader": {
        "en": "Please Check Your Phone"
      },
      "pageDescription": {
        "en": "We have sent an SMS text message with a one-time password (OTP) to your phone."
      },
      "_type": {
        "_id": "PageNode",
        "name": "Page Node",
        "collection": true
      },
      "_outcomes": [
        {
          "id": "true",
          "displayName": "True"
        },
        {
          "id": "false",
          "displayName": "False"
        }
      ]
    },
    "927e0fbb-ca99-4c41-9e57-63f54e9c114c": {
      "_id": "927e0fbb-ca99-4c41-9e57-63f54e9c114c",
      "length": 8,
      "_type": {
        "_id": "OneTimePasswordGeneratorNode",
        "name": "HOTP Generator",
        "collection": true
      },
      "_outcomes": [
        {
          "id": "outcome",
          "displayName": "Outcome"
        }
      ]
    },
    "e2ab46bc-08b7-42b6-8987-7b382f63d910": {
      "_id": "e2ab46bc-08b7-42b6-8987-7b382f63d910",
      "inputs": [
        "*"
      ],
      "outcomes": [
        "known",
        "unknown"
      ],
      "outputs": [
        "*"
      ],
      "script": "739bdc48-fd24-4c52-b353-88706d75558a",
      "_type": {
        "_id": "ScriptedDecisionNode",
        "name": "Scripted Decision",
        "collection": true
      },
      "_outcomes": [
        {
          "id": "known",
          "displayName": "known"
        },
        {
          "id": "unknown",
          "displayName": "unknown"
        }
      ]
    }
  },
  "scripts": {
    "91554b10-79a5-4aa8-aca1-59481a734c19": {
      "_id": "91554b10-79a5-4aa8-aca1-59481a734c19",
      "name": "Twilio SMS OTP Sender",
      "description": "Twilio SMS OTP Sender",
      "script": "LyogVHdpbGlvIFNNUyBPVFAgU2VuZGVyCiAqCiAqIEF1dGhvcjogdm9sa2VyLnNjaGV1YmVyQGZvcmdlcm9jay5jb20KICogCiAqIFRoaXMgc2NyaXB0IHdpbGwgc2VuZCBhbiBTTVMgY29udGFpbmluZyB0aGUgT1RQIHRvIHRoZSBwaG9uZSBudW1iZXIgaW4gdGhlIHVzZXIncyBwcm9maWxlLgogKiAKICogVGhpcyBzY3JpcHQgbmVlZHMgdG8gYmUgcGFyYW1ldHJpemVkLiBJdCB3aWxsIG5vdCB3b3JrIHByb3Blcmx5IGFzIGlzLiAKICogSXQgcmVxdWlyZXMgdGhlIElkZW50aWZ5IEV4aXN0aW5nIFVzZXIgbm9kZSBhbmQgSE9UUCBHZW5lcmF0b3Igbm9kZSBiZWZvcmUgaXQgaXMgYmVpbmcgY2FsbGVkLgogKiAKICogVGhlIFNjcmlwdGVkIERlY2lzaW9uIE5vZGUgbmVlZHMgdGhlIGZvbGxvd2luZyBvdXRjb21lcyBkZWZpbmVkOgogKiAtIHNlbnQKICogLSBmYWlsZWQKICovCmxvZ2dlci53YXJuaW5nKCJUd2lsaW8gU01TIE9UUCBTZW5kZXI6IHN0YXJ0Iik7CgppZiAoc2hhcmVkU3RhdGUuZ2V0KCJfaWQiKSAmJiBpZFJlcG9zaXRvcnkuZ2V0QXR0cmlidXRlKHNoYXJlZFN0YXRlLmdldCgiX2lkIiksICJ0ZWxlcGhvbmVOdW1iZXIiKS5pdGVyYXRvcigpLmhhc05leHQoKSkgewogICAgdmFyIEJhc2U2ND17X2tleVN0cjoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLGVuY29kZTpmdW5jdGlvbihpbnB1dCl7dmFyIG91dHB1dD0iIjt2YXIgY2hyMSxjaHIyLGNocjMsZW5jMSxlbmMyLGVuYzMsZW5jNDt2YXIgaT0wO2lucHV0PUJhc2U2NC5fdXRmOF9lbmNvZGUoaW5wdXQpO3doaWxlKGk8aW5wdXQubGVuZ3RoKXtjaHIxPWlucHV0LmNoYXJDb2RlQXQoaSsrKTtjaHIyPWlucHV0LmNoYXJDb2RlQXQoaSsrKTtjaHIzPWlucHV0LmNoYXJDb2RlQXQoaSsrKTtlbmMxPWNocjE+PjI7ZW5jMj0oY2hyMSYzKTw8NHxjaHIyPj40O2VuYzM9KGNocjImMTUpPDwyfGNocjM+PjY7ZW5jND1jaHIzJjYzO2lmKGlzTmFOKGNocjIpKXtlbmMzPWVuYzQ9NjR9ZWxzZSBpZihpc05hTihjaHIzKSl7ZW5jND02NH1vdXRwdXQ9b3V0cHV0K3RoaXMuX2tleVN0ci5jaGFyQXQoZW5jMSkrdGhpcy5fa2V5U3RyLmNoYXJBdChlbmMyKSt0aGlzLl9rZXlTdHIuY2hhckF0KGVuYzMpK3RoaXMuX2tleVN0ci5jaGFyQXQoZW5jNCl9cmV0dXJuIG91dHB1dH0sZGVjb2RlOmZ1bmN0aW9uKGlucHV0KXt2YXIgb3V0cHV0PSIiO3ZhciBjaHIxLGNocjIsY2hyMzt2YXIgZW5jMSxlbmMyLGVuYzMsZW5jNDt2YXIgaT0wO2lucHV0PWlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCIiKTt3aGlsZShpPGlucHV0Lmxlbmd0aCl7ZW5jMT10aGlzLl9rZXlTdHIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7ZW5jMj10aGlzLl9rZXlTdHIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7ZW5jMz10aGlzLl9rZXlTdHIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7ZW5jND10aGlzLl9rZXlTdHIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7Y2hyMT1lbmMxPDwyfGVuYzI+PjQ7Y2hyMj0oZW5jMiYxNSk8PDR8ZW5jMz4+MjtjaHIzPShlbmMzJjMpPDw2fGVuYzQ7b3V0cHV0PW91dHB1dCtTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjEpO2lmKGVuYzMhPTY0KXtvdXRwdXQ9b3V0cHV0K1N0cmluZy5mcm9tQ2hhckNvZGUoY2hyMil9aWYoZW5jNCE9NjQpe291dHB1dD1vdXRwdXQrU3RyaW5nLmZyb21DaGFyQ29kZShjaHIzKX19b3V0cHV0PUJhc2U2NC5fdXRmOF9kZWNvZGUob3V0cHV0KTtyZXR1cm4gb3V0cHV0fSxfdXRmOF9lbmNvZGU6ZnVuY3Rpb24oc3RyaW5nKXtzdHJpbmc9c3RyaW5nLnJlcGxhY2UoL1xyXG4vZywiXG4iKTt2YXIgdXRmdGV4dD0iIjtmb3IodmFyIG49MDtuPHN0cmluZy5sZW5ndGg7bisrKXt2YXIgYz1zdHJpbmcuY2hhckNvZGVBdChuKTtpZihjPDEyOCl7dXRmdGV4dCs9U3RyaW5nLmZyb21DaGFyQ29kZShjKX1lbHNlIGlmKGM+MTI3JiZjPDIwNDgpe3V0ZnRleHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYz4+NnwxOTIpO3V0ZnRleHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYyY2M3wxMjgpfWVsc2V7dXRmdGV4dCs9U3RyaW5nLmZyb21DaGFyQ29kZShjPj4xMnwyMjQpO3V0ZnRleHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYz4+NiY2M3wxMjgpO3V0ZnRleHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYyY2M3wxMjgpfX1yZXR1cm4gdXRmdGV4dH0sX3V0ZjhfZGVjb2RlOmZ1bmN0aW9uKHV0ZnRleHQpe3ZhciBzdHJpbmc9IiI7dmFyIGk9MDt2YXIgYz1jMT1jMj0wO3doaWxlKGk8dXRmdGV4dC5sZW5ndGgpe2M9dXRmdGV4dC5jaGFyQ29kZUF0KGkpO2lmKGM8MTI4KXtzdHJpbmcrPVN0cmluZy5mcm9tQ2hhckNvZGUoYyk7aSsrfWVsc2UgaWYoYz4xOTEmJmM8MjI0KXtjMj11dGZ0ZXh0LmNoYXJDb2RlQXQoaSsxKTtzdHJpbmcrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGMmMzEpPDw2fGMyJjYzKTtpKz0yfWVsc2V7YzI9dXRmdGV4dC5jaGFyQ29kZUF0KGkrMSk7YzM9dXRmdGV4dC5jaGFyQ29kZUF0KGkrMik7c3RyaW5nKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChjJjE1KTw8MTJ8KGMyJjYzKTw8NnxjMyY2Myk7aSs9M319cmV0dXJuIHN0cmluZ319OwoKICAgCS8qIEJFR0lOIFNDUklQVCBDT05GSUdVUkFUSU9OCiAgICAgKgogICAgICogUkVQTEFDRSBXSVRIIFlPVVIgT1dOIEFaVVJFIEFEIFNFVFRJTkdTCiAgICAgKi8KICAgIHZhciBUV0lMSU9fQVBJX1NJRCA9ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IjsKICAgIHZhciBUV0lMSU9fQVBJX1RPS0VOID0gInh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IjsKICAgIHZhciBUV0lMSU9fQVBJX0ZST00gPSAiKzEyMzQ1Njc4OTAxIjsKICAgIC8qCiAgICAgKiBFTkQgU0NSSVBUIENPTkZJR1VSQVRJT04KICAgICAqLwogIAogICAgLy8gVHdpbGlvIFNNUyBNZXNzYWdlIEFQSSBDb25maWd1cmF0aW9uCiAgICB2YXIgVFdJTElPX0FQSV9VUkkgPSAiaHR0cHM6Ly9hcGkudHdpbGlvLmNvbS8yMDEwLTA0LTAxL0FjY291bnRzLyIuY29uY2F0KFRXSUxJT19BUElfU0lEKS5jb25jYXQoIi9NZXNzYWdlcy5qc29uIik7CQogICAgdmFyIFRXSUxJT19BUElfVE8gPSBpZFJlcG9zaXRvcnkuZ2V0QXR0cmlidXRlKHNoYXJlZFN0YXRlLmdldCgiX2lkIiksICJ0ZWxlcGhvbmVOdW1iZXIiKS5pdGVyYXRvcigpLm5leHQoKTsKICAgIHZhciBUV0lMSU9fQVBJX0JPRFkgPSAiT1RQIGZvciBhY2NvdW50ICIuY29uY2F0KHNoYXJlZFN0YXRlLmdldCgidXNlcm5hbWUiKSkuY29uY2F0KCI6ICIpLmNvbmNhdChzaGFyZWRTdGF0ZS5nZXQoIm9uZVRpbWVQYXNzd29yZCIpKTsKICAgIC8vbG9nZ2VyLndhcm5pbmcoIlR3aWxpbyBTTVMgT1RQIFNlbmRlcjogVG86ICIuY29uY2F0KFRXSUxJT19BUElfVE8pKTsKICAgIC8vbG9nZ2VyLndhcm5pbmcoIlR3aWxpbyBTTVMgT1RQIFNlbmRlcjogTWVzc2FnZTogIi5jb25jYXQoVFdJTElPX0FQSV9CT0RZKSk7CgogICAgdmFyIEFVVEhaID0gIkJhc2ljICIuY29uY2F0KEJhc2U2NC5lbmNvZGUoVFdJTElPX0FQSV9TSUQuY29uY2F0KCc6JykuY29uY2F0KFRXSUxJT19BUElfVE9LRU4pKSk7CiAgICAvL2xvZ2dlci53YXJuaW5nKCJUd2lsaW8gU01TIE9UUCBTZW5kZXI6IEFVVEhaIC0gIi5jb25jYXQoQVVUSFopKTsKCiAgICB2YXIgcmVxdWVzdCA9IG5ldyBvcmcuZm9yZ2Vyb2NrLmh0dHAucHJvdG9jb2wuUmVxdWVzdCgpOwogICAgcmVxdWVzdC5zZXRNZXRob2QoJ1BPU1QnKTsKICAgIHJlcXVlc3Quc2V0VXJpKFRXSUxJT19BUElfVVJJKTsKICAgIHJlcXVlc3QuZ2V0SGVhZGVycygpLmFkZCgiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwogICAgcmVxdWVzdC5nZXRIZWFkZXJzKCkuYWRkKCJBdXRob3JpemF0aW9uIiwgQVVUSFopOwogICAgdmFyIHBhcmFtcyA9IHJlcXVlc3QuZ2V0Rm9ybSgpOwogICAgcGFyYW1zLmFkZCgiRnJvbSIsIFRXSUxJT19BUElfRlJPTSk7CiAgICBwYXJhbXMuYWRkKCJCb2R5IiwgVFdJTElPX0FQSV9CT0RZKTsKICAgIHBhcmFtcy5hZGQoIlRvIiwgVFdJTElPX0FQSV9UTyk7CiAgICByZXF1ZXN0LmdldEVudGl0eSgpLnNldFN0cmluZyhwYXJhbXMudG9TdHJpbmcoKSk7CgogICAgdmFyIHJlc3BvbnNlID0gaHR0cENsaWVudC5zZW5kKHJlcXVlc3QpLmdldCgpOwogICAgdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UocmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0U3RyaW5nKCkpOwogICAgLy9sb2dnZXIud2FybmluZygiVHdpbGlvIFNNUyBPVFAgU2VuZGVyOiBKU09OIHJlc3VsdDogIiArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpOwoKICAgIGlmIChyZXN1bHRbImVycm9yX2NvZGUiXSkgewogICAgICAgIG91dGNvbWUgPSAiZmFpbGVkIjsKICAgICAgICBsb2dnZXIuZXJyb3IoIlR3aWxpbyBTTVMgT1RQIFNlbmRlcjogZXJyb3JfY29kZSA9ICIuY29uY2F0KHJlc3VsdFsiZXJyb3JfY29kZSJdKSk7CiAgICAgICAgbG9nZ2VyLmVycm9yKCJUd2lsaW8gU01TIE9UUCBTZW5kZXI6IGVycm9yX21lc3NhZ2UgPSAiLmNvbmNhdChyZXN1bHRbImVycm9yX21lc3NhZ2UiXSkpOwogICAgICAgIGxvZ2dlci5lcnJvcigiVHdpbGlvIFNNUyBPVFAgU2VuZGVyOiBvdXRjb21lID0gZmFpbGVkIik7CiAgICB9IGVsc2UgaWYgKHJlc3VsdFsiY29kZSJdKSB7CiAgICAgICAgb3V0Y29tZSA9ICJmYWlsZWQiOwogICAgICAgIGxvZ2dlci5lcnJvcigiVHdpbGlvIFNNUyBPVFAgU2VuZGVyOiBjb2RlID0gIi5jb25jYXQocmVzdWx0WyJjb2RlIl0pKTsKICAgICAgICBsb2dnZXIuZXJyb3IoIlR3aWxpbyBTTVMgT1RQIFNlbmRlcjogbWVzc2FnZSA9ICIuY29uY2F0KHJlc3VsdFsibWVzc2FnZSJdKSk7CiAgICB9IGVsc2UgewogICAgICAgIG91dGNvbWUgPSAic2VudCI7CiAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlR3aWxpbyBTTVMgT1RQIFNlbmRlcjogb3V0Y29tZSA9IHNlbnQiKTsKICAgIH0KfSBlbHNlIHsKICAJb3V0Y29tZSA9ICJmYWlsZWQiOwogIAlsb2dnZXIuZXJyb3IoIlR3aWxpbyBTTVMgT1RQIFNlbmRlcjogTm8gdXNlciBvciBwaG9uZSBudW1iZXIgZm91bmQhIFVzZSAnSWRlbnRpZnkgRXhpc3RpbmcgVXNlciBub2RlIGJlZm9yZSB0aGlzIHNjcmlwdCB0byBwb3B1bGF0ZSB0aGUgdXNlcidzIF9pZCBpbiBzaGFyZWQgc3RhdGUhJyIpOwogIAlsb2dnZXIuZXJyb3IoIlR3aWxpbyBTTVMgT1RQIFNlbmRlcjogb3V0Y29tZSA9IGZhaWxlZCIpOwp9",
      "default": false,
      "language": "JAVASCRIPT",
      "context": "AUTHENTICATION_TREE_DECISION_NODE",
      "createdBy": "null",
      "creationDate": 0,
      "lastModifiedBy": "null",
      "lastModifiedDate": 0
    },
    "739bdc48-fd24-4c52-b353-88706d75558a": {
      "_id": "739bdc48-fd24-4c52-b353-88706d75558a",
      "name": "Check Username",
      "description": "Check if username has already been collected.",
      "script": "LyogQ2hlY2sgVXNlcm5hbWUKICoKICogQXV0aG9yOiB2b2xrZXIuc2NoZXViZXJAZm9yZ2Vyb2NrLmNvbQogKiAKICogQ2hlY2sgaWYgdXNlcm5hbWUgaGFzIGFscmVhZHkgYmVlbiBjb2xsZWN0ZWQuCiAqIFJldHVybiAia25vd24iIGlmIHllcywgInVua25vd24iIG90aGVyd2lzZS4KICogCiAqIFRoaXMgc2NyaXB0IGRvZXMgbm90IG5lZWQgdG8gYmUgcGFyYW1ldHJpemVkLiBJdCB3aWxsIHdvcmsgcHJvcGVybHkgYXMgaXMuCiAqIAogKiBUaGUgU2NyaXB0ZWQgRGVjaXNpb24gTm9kZSBuZWVkcyB0aGUgZm9sbG93aW5nIG91dGNvbWVzIGRlZmluZWQ6CiAqIC0ga25vd24KICogLSB1bmtub3duCiAqLwppZiAobnVsbCAhPSBzaGFyZWRTdGF0ZS5nZXQoInVzZXJuYW1lIikpIHsKCW91dGNvbWUgPSAia25vd24iOwp9CmVsc2UgewogCW91dGNvbWUgPSAidW5rbm93biI7Cn0=",
      "default": false,
      "language": "JAVASCRIPT",
      "context": "AUTHENTICATION_TREE_DECISION_NODE",
      "createdBy": "null",
      "creationDate": 0,
      "lastModifiedBy": "null",
      "lastModifiedDate": 0
    }
  },
  "emailTemplates": {},
  "tree": {
    "_id": "MFAWithSMSOTP",
    "entryNodeId": "e2ab46bc-08b7-42b6-8987-7b382f63d910",
    "nodes": {
      "137f7944-00fa-4060-a408-bc89a98496ca": {
        "x": 440,
        "y": 137,
        "connections": {
          "false": "e301438c-0bd0-429c-ab0c-66126501069a",
          "true": "927e0fbb-ca99-4c41-9e57-63f54e9c114c"
        },
        "nodeType": "IdentifyExistingUserNode",
        "displayName": "Identify Existing User"
      },
      "460244c1-516c-4863-8a8f-7ec34a5cc139": {
        "x": 917,
        "y": 137,
        "connections": {
          "failed": "e301438c-0bd0-429c-ab0c-66126501069a",
          "sent": "91e284c9-7b2a-418f-b667-ba47f229ced8"
        },
        "nodeType": "ScriptedDecisionNode",
        "displayName": "Send OTP"
      },
      "927e0fbb-ca99-4c41-9e57-63f54e9c114c": {
        "x": 687,
        "y": 162.5,
        "connections": {
          "outcome": "460244c1-516c-4863-8a8f-7ec34a5cc139"
        },
        "nodeType": "OneTimePasswordGeneratorNode",
        "displayName": "Generate HOTP"
      },
      "e2ab46bc-08b7-42b6-8987-7b382f63d910": {
        "x": 211,
        "y": 133.76666259765625,
        "connections": {
          "known": "137f7944-00fa-4060-a408-bc89a98496ca",
          "unknown": "e301438c-0bd0-429c-ab0c-66126501069a"
        },
        "nodeType": "ScriptedDecisionNode",
        "displayName": "Check Username"
      },
      "91e284c9-7b2a-418f-b667-ba47f229ced8": {
        "x": 1158,
        "y": 118.015625,
        "connections": {
          "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0",
          "false": "e301438c-0bd0-429c-ab0c-66126501069a"
        },
        "nodeType": "PageNode",
        "displayName": "OTP Validation"
      }
    },
    "staticNodes": {
      "startNode": {
        "x": 70,
        "y": 155
      },
      "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": {
        "x": 1449,
        "y": 73
      },
      "e301438c-0bd0-429c-ab0c-66126501069a": {
        "x": 1457,
        "y": 412
      }
    },
    "identityResource": "managed/alpha_user",
    "uiConfig": {}
  }
}
