{
  "exportFormatVersion": 2,
  "exportTime": "2026-11-11 00:00:00",
  "containerVersion": {
    "name": "Festapp website measurement - paused setup preset",
    "accountId": "0",
    "containerId": "0",
    "containerVersionId": "0",
    "container": {
      "accountId": "0",
      "containerId": "0",
      "name": "Festapp host preset",
      "usageContext": [
        "WEB"
      ]
    },
    "tag": [
      {
        "tagId": "1",
        "name": "GA4 - Festapp - form_page_view",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "form_page_view"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "1"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "2",
        "name": "GA4 - Festapp - form_start",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "form_start"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "2"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "3",
        "name": "GA4 - Festapp - form_submit_error",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "form_submit_error"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "3"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "4",
        "name": "GA4 - Festapp - view_item",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "true"
          },
          {
            "type": "TEMPLATE",
            "key": "getEcommerceDataFrom",
            "value": "dataLayer"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "view_item"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "4"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "5",
        "name": "GA4 - Festapp - add_to_cart",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "true"
          },
          {
            "type": "TEMPLATE",
            "key": "getEcommerceDataFrom",
            "value": "dataLayer"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "add_to_cart"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "5"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "6",
        "name": "GA4 - Festapp - remove_from_cart",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "true"
          },
          {
            "type": "TEMPLATE",
            "key": "getEcommerceDataFrom",
            "value": "dataLayer"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "remove_from_cart"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "6"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "7",
        "name": "GA4 - Festapp - begin_checkout",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "true"
          },
          {
            "type": "TEMPLATE",
            "key": "getEcommerceDataFrom",
            "value": "dataLayer"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "begin_checkout"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "7"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "8",
        "name": "GA4 - Festapp - add_payment_info",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "true"
          },
          {
            "type": "TEMPLATE",
            "key": "getEcommerceDataFrom",
            "value": "dataLayer"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "add_payment_info"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "8"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "9",
        "name": "GA4 - Festapp - purchase",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "true"
          },
          {
            "type": "TEMPLATE",
            "key": "getEcommerceDataFrom",
            "value": "dataLayer"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "purchase"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_data"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{User-Provided Data - Festapp - manual}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "9"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "10",
        "name": "GA4 - Festapp - generate_lead",
        "type": "gaawe",
        "parameter": [
          {
            "type": "BOOLEAN",
            "key": "sendEcommerceData",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "generate_lead"
          },
          {
            "type": "TEMPLATE",
            "key": "measurementIdOverride",
            "value": "{{GA4 ID - Festapp}}"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "page_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.page_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_type"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.user_type}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "language"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{dl.language}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "currency"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{cjs - Festapp - lead currency}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "value"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{cjs - Festapp - lead value}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "lead_source"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{cjs - Festapp - lead lead_source}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "event_id"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{cjs - Festapp - lead event_id}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_data"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{User-Provided Data - Festapp - manual}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "10"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "11",
        "name": "GAds - Festapp - Nákup vstupenek",
        "type": "awct",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "conversionId",
            "value": "{{GAds ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "conversionLabel",
            "value": "{{GAds label - Festapp - Nákup vstupenek}}"
          },
          {
            "type": "TEMPLATE",
            "key": "orderId",
            "value": "{{dl.ecommerce.transaction_id}}"
          },
          {
            "type": "TEMPLATE",
            "key": "conversionValue",
            "value": "{{dl.ecommerce.value}}"
          },
          {
            "type": "TEMPLATE",
            "key": "currencyCode",
            "value": "{{dl.ecommerce.currency}}"
          },
          {
            "type": "BOOLEAN",
            "key": "enableNewCustomerReporting",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enableProductReporting",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enableShippingData",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "rdp",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enableConversionLinker",
            "value": "true"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_data"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{User-Provided Data - Festapp - manual}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "9"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "12",
        "name": "GAds - Festapp - Registrace",
        "type": "awct",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "conversionId",
            "value": "{{GAds ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "conversionLabel",
            "value": "{{GAds label - Festapp - Registrace}}"
          },
          {
            "type": "TEMPLATE",
            "key": "orderId",
            "value": "{{cjs - Festapp - lead event_id}}"
          },
          {
            "type": "TEMPLATE",
            "key": "conversionValue",
            "value": "{{cjs - Festapp - lead value}}"
          },
          {
            "type": "TEMPLATE",
            "key": "currencyCode",
            "value": "{{cjs - Festapp - lead currency}}"
          },
          {
            "type": "BOOLEAN",
            "key": "enableNewCustomerReporting",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enableProductReporting",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enableShippingData",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "rdp",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enableConversionLinker",
            "value": "true"
          },
          {
            "type": "LIST",
            "key": "eventSettingsTable",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "parameter",
                    "value": "user_data"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "parameterValue",
                    "value": "{{User-Provided Data - Festapp - manual}}"
                  }
                ]
              }
            ]
          }
        ],
        "firingTriggerId": [
          "11"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NOT_NEEDED"
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "13",
        "name": "Meta Pixel - Festapp - ViewContent",
        "type": "cvt_0_1",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "pixelId",
            "value": "{{FB Pixel ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "standard"
          },
          {
            "type": "TEMPLATE",
            "key": "standardEventName",
            "value": "ViewContent"
          },
          {
            "type": "BOOLEAN",
            "key": "consent",
            "value": "true"
          },
          {
            "type": "BOOLEAN",
            "key": "optInMetaCAPI",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "advancedMatching",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enhancedEcommerce",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "useGA4Ecommerce",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "objectPropertiesFromVariable",
            "value": "{{cjs - Festapp - Meta properties}}"
          }
        ],
        "firingTriggerId": [
          "4"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NEEDED",
          "consentType": {
            "type": "LIST",
            "list": [
              {
                "type": "TEMPLATE",
                "value": "ad_storage"
              }
            ]
          }
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "14",
        "name": "Meta Pixel - Festapp - AddToCart",
        "type": "cvt_0_1",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "pixelId",
            "value": "{{FB Pixel ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "standard"
          },
          {
            "type": "TEMPLATE",
            "key": "standardEventName",
            "value": "AddToCart"
          },
          {
            "type": "BOOLEAN",
            "key": "consent",
            "value": "true"
          },
          {
            "type": "BOOLEAN",
            "key": "optInMetaCAPI",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "advancedMatching",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enhancedEcommerce",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "useGA4Ecommerce",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "objectPropertiesFromVariable",
            "value": "{{cjs - Festapp - Meta properties}}"
          }
        ],
        "firingTriggerId": [
          "5"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NEEDED",
          "consentType": {
            "type": "LIST",
            "list": [
              {
                "type": "TEMPLATE",
                "value": "ad_storage"
              }
            ]
          }
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "15",
        "name": "Meta Pixel - Festapp - InitiateCheckout",
        "type": "cvt_0_1",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "pixelId",
            "value": "{{FB Pixel ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "standard"
          },
          {
            "type": "TEMPLATE",
            "key": "standardEventName",
            "value": "InitiateCheckout"
          },
          {
            "type": "BOOLEAN",
            "key": "consent",
            "value": "true"
          },
          {
            "type": "BOOLEAN",
            "key": "optInMetaCAPI",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "advancedMatching",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enhancedEcommerce",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "useGA4Ecommerce",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "objectPropertiesFromVariable",
            "value": "{{cjs - Festapp - Meta properties}}"
          }
        ],
        "firingTriggerId": [
          "7"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NEEDED",
          "consentType": {
            "type": "LIST",
            "list": [
              {
                "type": "TEMPLATE",
                "value": "ad_storage"
              }
            ]
          }
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "16",
        "name": "Meta Pixel - Festapp - AddPaymentInfo",
        "type": "cvt_0_1",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "pixelId",
            "value": "{{FB Pixel ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "standard"
          },
          {
            "type": "TEMPLATE",
            "key": "standardEventName",
            "value": "AddPaymentInfo"
          },
          {
            "type": "BOOLEAN",
            "key": "consent",
            "value": "true"
          },
          {
            "type": "BOOLEAN",
            "key": "optInMetaCAPI",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "advancedMatching",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "enhancedEcommerce",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "useGA4Ecommerce",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "objectPropertiesFromVariable",
            "value": "{{cjs - Festapp - Meta properties}}"
          }
        ],
        "firingTriggerId": [
          "8"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NEEDED",
          "consentType": {
            "type": "LIST",
            "list": [
              {
                "type": "TEMPLATE",
                "value": "ad_storage"
              }
            ]
          }
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "17",
        "name": "Meta Pixel - Festapp - Purchase",
        "type": "cvt_0_1",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "pixelId",
            "value": "{{FB Pixel ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "standard"
          },
          {
            "type": "TEMPLATE",
            "key": "standardEventName",
            "value": "Purchase"
          },
          {
            "type": "BOOLEAN",
            "key": "consent",
            "value": "true"
          },
          {
            "type": "BOOLEAN",
            "key": "optInMetaCAPI",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "advancedMatching",
            "value": "true"
          },
          {
            "type": "LIST",
            "key": "advancedMatchingList",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "name",
                    "value": "em"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "value",
                    "value": "{{cjs - Festapp - email}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "name",
                    "value": "ph"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "value",
                    "value": "{{cjs - Festapp - Meta phone}}"
                  }
                ]
              }
            ]
          },
          {
            "type": "BOOLEAN",
            "key": "enhancedEcommerce",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "useGA4Ecommerce",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "objectPropertiesFromVariable",
            "value": "{{cjs - Festapp - Meta properties}}"
          }
        ],
        "firingTriggerId": [
          "9"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NEEDED",
          "consentType": {
            "type": "LIST",
            "list": [
              {
                "type": "TEMPLATE",
                "value": "ad_storage"
              }
            ]
          }
        },
        "parentFolderId": "1"
      },
      {
        "tagId": "18",
        "name": "Meta Pixel - Festapp - Lead",
        "type": "cvt_0_1",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "pixelId",
            "value": "{{FB Pixel ID - Festapp}}"
          },
          {
            "type": "TEMPLATE",
            "key": "eventName",
            "value": "standard"
          },
          {
            "type": "TEMPLATE",
            "key": "standardEventName",
            "value": "Lead"
          },
          {
            "type": "BOOLEAN",
            "key": "consent",
            "value": "true"
          },
          {
            "type": "BOOLEAN",
            "key": "optInMetaCAPI",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "advancedMatching",
            "value": "true"
          },
          {
            "type": "LIST",
            "key": "advancedMatchingList",
            "list": [
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "name",
                    "value": "em"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "value",
                    "value": "{{cjs - Festapp - email}}"
                  }
                ]
              },
              {
                "type": "MAP",
                "map": [
                  {
                    "type": "TEMPLATE",
                    "key": "name",
                    "value": "ph"
                  },
                  {
                    "type": "TEMPLATE",
                    "key": "value",
                    "value": "{{cjs - Festapp - Meta phone}}"
                  }
                ]
              }
            ]
          },
          {
            "type": "BOOLEAN",
            "key": "enhancedEcommerce",
            "value": "false"
          },
          {
            "type": "BOOLEAN",
            "key": "useGA4Ecommerce",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "objectPropertiesFromVariable",
            "value": "{{cjs - Festapp - Meta properties}}"
          }
        ],
        "firingTriggerId": [
          "10"
        ],
        "tagFiringOption": "ONCE_PER_EVENT",
        "paused": true,
        "consentSettings": {
          "consentStatus": "NEEDED",
          "consentType": {
            "type": "LIST",
            "list": [
              {
                "type": "TEMPLATE",
                "value": "ad_storage"
              }
            ]
          }
        },
        "parentFolderId": "1"
      }
    ],
    "trigger": [
      {
        "triggerId": "1",
        "name": "event - Festapp - form_page_view",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "form_page_view"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "2",
        "name": "event - Festapp - form_start",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "form_start"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "3",
        "name": "event - Festapp - form_submit_error",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "form_submit_error"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "4",
        "name": "event - Festapp - view_item",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "view_item"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "5",
        "name": "event - Festapp - add_to_cart",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "add_to_cart"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "6",
        "name": "event - Festapp - remove_from_cart",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "remove_from_cart"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "7",
        "name": "event - Festapp - begin_checkout",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "begin_checkout"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "8",
        "name": "event - Festapp - add_payment_info",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "add_payment_info"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "9",
        "name": "event - Festapp - purchase",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "purchase"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "10",
        "name": "event - Festapp - generate_lead",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "generate_lead"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      },
      {
        "triggerId": "11",
        "name": "event - Festapp - generate_lead - free_registration",
        "type": "CUSTOM_EVENT",
        "customEventFilter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{_event}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "generate_lead"
              }
            ]
          }
        ],
        "filter": [
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.form_embedded}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "true"
              }
            ]
          },
          {
            "type": "EQUALS",
            "parameter": [
              {
                "type": "TEMPLATE",
                "key": "arg0",
                "value": "{{dl.lead_source}}"
              },
              {
                "type": "TEMPLATE",
                "key": "arg1",
                "value": "free_registration"
              }
            ]
          }
        ],
        "parentFolderId": "1"
      }
    ],
    "variable": [
      {
        "variableId": "1",
        "name": "dl.form_embedded",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "form_embedded"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "2",
        "name": "dl.ecommerce.value",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "ecommerce.value"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "3",
        "name": "dl.ecommerce.currency",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "ecommerce.currency"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "4",
        "name": "dl.ecommerce.transaction_id",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "ecommerce.transaction_id"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "5",
        "name": "dl.ecommerce.items",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "ecommerce.items"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "6",
        "name": "dl.user_data.email",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "user_data.email"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "7",
        "name": "dl.user_data.phone_number",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "user_data.phone_number"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "8",
        "name": "dl.page_type",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "page_type"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "9",
        "name": "dl.user_type",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "user_type"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "10",
        "name": "dl.language",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "language"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "11",
        "name": "dl.currency",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "currency"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "12",
        "name": "dl.value",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "value"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "13",
        "name": "dl.lead_source",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "lead_source"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "14",
        "name": "dl.event_id",
        "type": "v",
        "parameter": [
          {
            "type": "INTEGER",
            "key": "dataLayerVersion",
            "value": "2"
          },
          {
            "type": "BOOLEAN",
            "key": "setDefaultValue",
            "value": "false"
          },
          {
            "type": "TEMPLATE",
            "key": "name",
            "value": "event_id"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "15",
        "name": "GA4 ID - Festapp",
        "type": "c",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "value",
            "value": "G-REPLACE0000"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "16",
        "name": "GAds ID - Festapp",
        "type": "c",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "value",
            "value": "000000000"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "17",
        "name": "GAds label - Festapp - Nákup vstupenek",
        "type": "c",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "value",
            "value": "REPLACE_PURCHASE_LABEL"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "18",
        "name": "GAds label - Festapp - Registrace",
        "type": "c",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "value",
            "value": "REPLACE_REGISTRATION_LABEL"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "19",
        "name": "FB Pixel ID - Festapp",
        "type": "c",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "value",
            "value": "000000000000000"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "20",
        "name": "cjs - Festapp - email",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { if ({{dl.form_embedded}} !== true || ['purchase','generate_lead'].indexOf({{Event}}) < 0) return; var v={{dl.user_data.email}}; if (typeof v === 'string') return v; }"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "21",
        "name": "cjs - Festapp - phone",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { if ({{dl.form_embedded}} !== true || ['purchase','generate_lead'].indexOf({{Event}}) < 0) return; var v={{dl.user_data.phone_number}}; if (typeof v === 'string' && v.charAt(0) === '+' && /^[1-9][0-9]{7,14}$/.test(v.substring(1))) return v; }"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "22",
        "name": "cjs - Festapp - Meta phone",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { var v={{cjs - Festapp - phone}}; if (typeof v === 'string') return v.substring(1); }"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "23",
        "name": "User-Provided Data - Festapp - manual",
        "type": "awec",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "mode",
            "value": "MANUAL"
          },
          {
            "type": "TEMPLATE",
            "key": "email",
            "value": "{{cjs - Festapp - email}}"
          },
          {
            "type": "TEMPLATE",
            "key": "phone_number",
            "value": "{{cjs - Festapp - phone}}"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "24",
        "name": "cjs - Festapp - lead currency",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { if ({{dl.form_embedded}} === true && {{Event}} === 'generate_lead') return {{dl.currency}}; }"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "25",
        "name": "cjs - Festapp - lead value",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { if ({{dl.form_embedded}} === true && {{Event}} === 'generate_lead') return {{dl.value}}; }"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "26",
        "name": "cjs - Festapp - lead lead_source",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { if ({{dl.form_embedded}} === true && {{Event}} === 'generate_lead') return {{dl.lead_source}}; }"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "27",
        "name": "cjs - Festapp - lead event_id",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { if ({{dl.form_embedded}} === true && {{Event}} === 'generate_lead') return {{dl.event_id}}; }"
          }
        ],
        "parentFolderId": "1"
      },
      {
        "variableId": "28",
        "name": "cjs - Festapp - Meta properties",
        "type": "jsm",
        "parameter": [
          {
            "type": "TEMPLATE",
            "key": "javascript",
            "value": "function () { \n if ({{dl.form_embedded}} !== true) return {};\n var event={{Event}}, result={};\n if (event === 'generate_lead') {\n  result.currency={{cjs - Festapp - lead currency}}; result.value={{cjs - Festapp - lead value}};\n } else if ([\"view_item\",\"add_to_cart\",\"remove_from_cart\",\"begin_checkout\",\"add_payment_info\",\"purchase\"].indexOf(event) >= 0) {\n  result.currency={{dl.ecommerce.currency}}; result.value={{dl.ecommerce.value}};\n  var items={{dl.ecommerce.items}};\n  if (items instanceof Array) result.contents=items.slice(0,200).map(function (item) {\n   return {id:item.item_id,quantity:item.quantity,item_price:item.price};\n  });\n }\n return result; }"
          }
        ],
        "parentFolderId": "1"
      }
    ],
    "folder": [
      {
        "folderId": "1",
        "name": "Festapp"
      }
    ],
    "customTemplate": [
      {
        "templateId": "1",
        "name": "Meta Pixel",
        "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"displayName\": \"Meta Pixel\",\n  \"__wm\": \"VGVtcGxhdGUtQXV0aG9yX0ZhY2Vib29rLVNpbW8tQWhhdmE\\u003d\",\n  \"description\": \"Integrate your GTM with Meta Pixel for a streamlined way to connect your data to Meta and help maximize your advertising and measurement by understanding the actions people take on your website.\",\n  \"categories\": [\n    \"ADVERTISING\",\n    \"ANALYTICS\"\n  ],\n  \"id\": \"cvt_5RM3Q\",\n  \"type\": \"TAG\",\n  \"version\": 1,\n  \"brand\": {\n    \"displayName\": \"meta\",\n    \"id\": \"github.com_meta\",\n    \"thumbnail\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIYAAAB0CAIAAADPQd3UAAAAA3NCSVQICAjb4U/gAAAAknpUWHRSYXcgcHJvZmlsZSB0eXBlIEFQUDEAAAiZVY5LCsMwDET3PkWOMPpYto5TghMCpQm5/6Jy7S4ygxgxiIfS3j7tPtblus/teLe0/OSa1NX5BaBiiAEhUE+UWdlI81qgsdDsGx7KcWFiVGL+LMAHR8eNQDiMas69Jx69rk+WUhaV/t1ki0lhy+EW/Gpb0fQFroos+GSEz4QAAA5pSURBVHic7Zx7cFzVfce/v9+5e3clWbJkywjLgF+ykYMdYbCNX8TtACaUTKaBmpYEMyFASAmBTJu2CaQZynQaKI82bSZ2GhcazMAALpTwimlKeDg2YLBlhZbyCBSwLYQMlmV5tbv3nt+vf5y7toQZSHeMfTpzPrN67N69d889n3tev9+dJVVFwCf4SBcg8EGCEu8ISrwjKPGOoMQ7ghLvCEq8IyjxjqDEO4IS7whKvCMo8Y6gxDuCEu8ISrwjKPGOoMQ7ghLvCEq8IyjxjqDEO4IS7whKvCMo8Y6gxDuCEu8ISrwjKPGOoMQ7ghLvCEq8IyjxjqDEO4IS7whKvCMo8Y6gxDuCEu8ISrwjKPGOoMQ7ghLvCEq8o0Yl2feuCACrSCxU3VMBVACtPtybVTHym1pUIAlU3A6CERstkLjjCmCBbMfsl9RW2o87Fb++RaZGJdbVlQWQCIYTqABIAQtI9gcQd75VJVoVJSmkDEmRAmlW9wBUoSkwDFhVWCAFxG2zbnP6CVRfdgHpgceIz9AjoCyqbTcacQSCsHuBAVYQFJECDCiBFGwJBGUiFaiCTQ7IAQSGAgYABGAiIAYsQAQYwMC9Q0GkIAXrqI8+JND+P540lpqVKEAgAAbIuf9gALLZDwCFknsXZaerWQdEcJ0TgSAsAiZAAAIRcu4DWAGqXqVMCgB86I2MOOCHWDkSompUwq6kBCgRRewkkbUQgRF3XAEzhFA2iKCRqDILyLgRgZCy65VSBjOiag+RY1iChQKizoJkTj+2m91ff4fO3CG/Bj6OmmdcBMqKS6BqDyMKEtCB46pwNlYTWAU0apR3TQXEAEONZhelgKpdPEFdewN9Mm3EQ2qecZFCs72rl7fr7gGu1l0ZmsBKXkBACQRBlFbrVbPRIkLOgKAJFCzZcawrmzJgFOSUZPupioiIHKLv26ORD6pK19GPw0mNHZeACACEiCDuNBjE7MZ4KJCCE8AI5fcAKZADM4NJQZQoyGAPIEAjUACTax5KDEoBRcRMsCAityFSAUjBSSpRZACAIJqVQ1WZKE3SKBcBEBHiakN1XexB7cvtAkCsEBNV31G9YI4YNSrRardishfIvWQIIiCTAmlKVELdzkHcev/zA4OVia0TPr+sY0Y7lSpIc3jmxb5nt71dSXj5KZ2LZtXX2yhCClthUyeqPa+88tqL/33CjM7ZszvFVSgB1lZEBof2bX722SgXLV2ytFCIs48nstaaKCeigBKzFaiqtTaOowNlzua5YgyDKLVCBDacJqmJDB/s7UhAtTX/JGvq1rjBlwCQAOzGB1NOYIoUPfoqrr7lyaH3tseFMYPlaObRDX/6td85oRP3/bLy01+8MqkwmLeV/qHmCz574sWnYRyBtGwT2Wv1r//+h//8o1WTJkx85OFH2iY2C2zBWmIznMg//mj1jTfeOGlS+2Pr1zc1NuZyLAKxKTNDEUUMIBVVxb33rluzZs111123cNEpVG0org8UAQBmqCqIXE+rCjqoPbnaOZyuamwlyMZbA4UbRNwAwNlYrmVE3dvxg9s2V7Tu0hWnzzq+rfvl3Y/9cuv3V20+bfn8Z57vvugLCz43H0kRP30EDz3xQmtL1++fFI0DmTiOyjbO148bP77/vb7Vq1dffc23c3lDkYHqG2+++dAjj8aFurHN4wQU5TgVEKGSpKVSKZ+PG0y9K50V2T0wsKO3d7hUqlTSKIqIwIwkkeLwsLW2ob4+zkeJtUxsmKjaFDF67XP4p8G1LxXJLRsEIFKIBSyQI0AqAA9YPPxMcUfv7hWfO/3b53Be9MyZY9uaTvnhv7685mdvXHx212UnF5tQXy7g4t/DTe+23t890DWzdUyjiUVJIBZRbBYsnHffunVnLl++YOlJAkBp7Z139fW/f+zkqamIFRWgOFzZuuWFxx//j3f7+lqam5ctW7Z48eL+99677777Nz//vDHRAw8++KuNm7q6us4++6zdA0NPPPnE5uc2DwwMTJ4yZcmSRd09W+edfPL8efMZUFFmOrhFHOburMYZVzY5rcacBJJCLQBKENkU9GY/Nr9SmTqh6bxlHBEiY1sK9qQFDfG4Vmvk/T3lYakXoI5tRz2Wzpu8bZd5bReGlQEmEJRyEV9x+WVxRGvXrt07ZC2wpefFO++656yzzurq6rICNrnUYv1jj119zXc3btyUy8W/fvE///J73/v5+vX7isVnNz/Xv6u/VCm/9tpvnnnu2be2v11O0tvvWHvttX+1YeOvSpXKU08/9Z1rrln943/a1vPrSpJkzcQDalYyovzZfxaAkoA0RfTuEP6rn+fN6Zg21m0zKXIbX0jKmjbmky1btz7zYpICeZSabGn6JFTille377WUrQkN03Bx38yZ07/61Uue3rDhyQ2b9lVww81/V6iru+grFxlmFUtEg4PFW2/9l/GtrX97401/8/3rV63+8axPzV679o44l1u9atUfnHtuXV3h61d8fe3atRdeeOHOHTvW3n77rE/NWr161S233LTmJz9ZtHDh0FBRFcaYJEnZj/G9ZiUAAIPEoEIwMAWgHlaBMjgBvT2Afs61T20dEyFWDCqt/x88urHntFOn/cWXO9Ohd+95evv29wFpsFporMcxTenu3l61ECYYgSZxFA0Xi3+48vzxkyaue3j9Hff+7N+f2HDZZZe0TRin6tqkff31115//TdLly5rbW3b+U4fm/ziJct29O7q6+1tbW6ETWBtXT5uKBSaGgrdW7YMDQ6uOOecWTNntIxpOLq1ZcW55zY3jycYUmZiUkDtwQuS/x9jiVsaEqyLMGaDvKqyUeREkFaQa4gLYyAEUfQVcdeGSl1U+cIpmD4B2+Z2/Hzbzo09R09ZWgdCFKM+5qSSWkWilCqBCKKkaBxT9+WV59/wD2u2bHh8wdw5F3zpfGtTmybMpCrv9L2TJJV16+5Zv/5RERg2SZrWNzSkVsRqZCJVZTYgsoKdvb35QqGpqYkJUDAbJs7l8lCISBy7+fwH28nhX6DUrKTiFncuNuVSGwpWRKRgi3pCXbJP1AwjTtPc4y9g01vx5QunLZ1QAgpn/e7cDTveuvvh5+dMPrVzalLWXLmSoj5vAWUox0Q5AhvVgqHly5Z0b+l546WeP/njS8Y1NezavcdE7PIobW1Hmch85jOnnnHGGVEUqXKapvl8vnPmdCVSELNJUxvlDAgT2iYOlyq79+yxAmakiSSprZSGATVsbCom8iKhV/MkOJuv84inxAYAEfIGk8djUq7/qa1Ra/vkHW/j/l9sOrF92vIT25ogJWDRTFwwv/7Ox0rf/bftl55zzKvbMbjj1amfOSbHUAEJYMUwGzZQbW876jvf+mZpYNeMaVNTERdmiaPIAFOOPfb4jo6XX3rpj847b86cOSravW3bnoHBhoZ6BcY0NhVLpd6+vkpFTMTzFyxoGjv2gQcenDPn0zM7pu96//27776nWCwSkbVpLo4UIA9Gk5pbCblpl+sEXMclyJZdhjBlAk6ZHm/qeb37lf5U7fRx5pIz26Y0IEq5nqGKi09vffm94x/aumPnD95iW2xvH3/ijLEFRt4lv9Jk39A+F5DMRTSpvY0ntqI0HDEbpsrw8N49AxA5qnX8N664/M++9eeXXvyVzs7OJEm7u7vnzj2ps7OjcUz7kqVL4zh//fU33HbbbaeddvpVV1218oILbr7l5pUrV06ZPLmnp6elpSVNKkm5TFAiiKjhI583Mddee20Nu1kYhiHZ39IFRCAjIEkRkdbVU/u0sTEV6qV08jH8tc/PXTyZxypgQYI8oyGPuSeMbW+IsHdw9tS2FZ+dvWAKmgFShU2GhksTxjUvXry4sbFRmcsCA6I4TkVEbGl4+Lhjj1uyZDETzejoWLJ40d69e3t37mTCl774xW9edeVxx7UXh8stLc0ndnUN7hko7isuXLhw3smfPuGE2TM7Onb1v1spl85bseLKK7/R1Dhm3rx5U6dOIYCZoDoi1nXQpPKwUHtAJUIWsAUASsFqEbl4BGtaoWg3kAIMREAdUA/LapBmJ1s2ECABSu4AwFgglhSSgHMpR+zSJZRl9I1bmZIeCNbqqJVEpZLGceReHBGOzLbuj4sQHQhEZhMTglg1THzgaKNW8J9AKvOjqFFJuj+FmB3GVpWAAdIySEvIRTCkSAgERLBlkEDrIRZURNSIlIUAYwmWEEsKHQYAygnnR+QUIVmA2YUMPrTAB1fab3NepNX9vBjZAdQ8lhikBAaPPBE+EGXRGKSxu1IJOViXhi9ACUQagRBDGWWQgBrhaoQJ6spj3CXuMmSa+ZBqwqyGS1YPNJNR8hT7nRz5cT2j5hhXCrDrpardLmc+3HYlBqop+WrgRclJYSDOrn63NHMzNwK5YPvIWrd0YOFGtU8R6cNDuq4b82GitZ+aJ8GmmoBw+XEzwseINFD2Sg4EUAVqQJQQGDBCQMGFkN0eUu08RgysWg3F1tC7fiAXRR+2ddTg5Am1KpEcSEFSTZWjmsty+fXqswOjqvssZ5EU1T4ku9UFBHGh/dHVQx/2+HhGeKDqcUa1ktFN5jCP3x9DzUoAJiWz/1ZFl2QEVQAriAHDxEAKqKVIQQQ2ZKFiYISQkOYggFUYA0BTonjEaJTVf/VGGONmEua3rrzqbTAj7tqolnN/o2MvrdQ443I3XVXTu8CBM88iK8huLdDqU/cehUKJqjUibms13fdRd879X7N7H3H70CdwZ9GhpFYlgU8Mf6bjgYygxDuCEu8ISrwjKPGOoMQ7ghLvCEq8IyjxjqDEO4IS7whKvCMo8Y6gxDuCEu8ISrwjKPGOoMQ7ghLvCEq8IyjxjqDEO4IS7whKvCMo8Y6gxDuCEu8ISrwjKPGOoMQ7ghLvCEq8IyjxjqDEO4IS7whKvCMo8Y6gxDuCEu8ISrwjKPGOoMQ7ghLv+F88vSagVKR24QAAAABJRU5ErkJggg\\u003d\\u003d\"\n  },\n  \"containerContexts\": [\n    \"WEB\"\n  ]\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"alwaysInSummary\": true,\n    \"valueValidators\": [\n      {\n        \"errorMessage\": \"You must provide a Pixel ID\",\n        \"type\": \"NON_EMPTY\"\n      },\n      {\n        \"args\": [\n          \"^[0-9,]+$\"\n        ],\n        \"errorMessage\": \"Invalid Pixel ID format\",\n        \"type\": \"REGEX\"\n      }\n    ],\n    \"displayName\": \"Facebook Pixel ID(s)\",\n    \"simpleValueType\": true,\n    \"name\": \"pixelId\",\n    \"type\": \"TEXT\",\n    \"valueHint\": \"e.g. 12345678910\"\n  },\n  {\n    \"type\": \"CHECKBOX\",\n    \"name\": \"enhancedEcommerce\",\n    \"checkboxText\": \"Enhanced Ecommerce dataLayer Integration\",\n    \"simpleValueType\": true,\n    \"help\": \"If you check this, then the Facebook pixel will populate \\u003cstrong\\u003eEvent Name\\u003c/strong\\u003e and \\u003cstrong\\u003eObject Properties\\u003c/strong\\u003e automatically from the last \\u003ca href\\u003d\\\"https://developers.google.com/tag-manager/enhanced-ecommerce\\\"\\u003eecommerce\\u003c/a\\u003e object pushed into the dataLayer array.\"\n  },\n  {\n    \"type\": \"CHECKBOX\",\n    \"name\": \"useGA4Ecommerce\",\n    \"checkboxText\": \"Use GA4 dataLayer Integration\",\n    \"simpleValueType\": true,\n    \"help\": \"**Use GA4 Ecommerce:**\\u003cbr/\\u003e\\n\\u003cbr/\\u003e\\nIf this feature is enabled, please push an **eventModel** object containing the required parameters into the dataLayer.\\u003cbr/\\u003e\\n\\u003cbr/\\u003e\\nExample:\\u003cbr/\\u003e\\n\\u003cbr/\\u003e\\nwindow.dataLayer \\u003d window.dataLayer || [];\\u003cbr/\\u003e\\n\\u003cbr/\\u003e\\nwindow.dataLayer.push({\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\\"event\\\": \\\"add_to_cart\\\",\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\\"eventModel\\\": {\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\\"currency\\\": \\\"USD\\\",\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\\"value\\\": 30,\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\\"items\\\": [\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;{\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\\"item_id\\\": \\\"item_id\\\",\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\\"item_name\\\": \\\"item_name\\\",\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\\"price\\\": 30\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;}\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;\\u0026nbsp;]\\u003cbr/\\u003e\\n\\u0026nbsp;\\u0026nbsp;}\\u003cbr/\\u003e\\n});\"\n  },\n  {\n    \"type\": \"RADIO\",\n    \"name\": \"eventName\",\n    \"displayName\": \"Event Name\",\n    \"radioItems\": [\n      {\n        \"value\": \"standard\",\n        \"displayValue\": \"Standard\",\n        \"subParams\": [\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"standardEventName\",\n            \"macrosInSelect\": false,\n            \"selectItems\": [\n              {\n                \"displayValue\": \"PageView\",\n                \"value\": \"PageView\"\n              },\n              {\n                \"displayValue\": \"AddPaymentInfo\",\n                \"value\": \"AddPaymentInfo\"\n              },\n              {\n                \"displayValue\": \"AddToCart\",\n                \"value\": \"AddToCart\"\n              },\n              {\n                \"displayValue\": \"AddToWishlist\",\n                \"value\": \"AddToWishlist\"\n              },\n              {\n                \"displayValue\": \"CompleteRegistration\",\n                \"value\": \"CompleteRegistration\"\n              },\n              {\n                \"displayValue\": \"Contact\",\n                \"value\": \"Contact\"\n              },\n              {\n                \"displayValue\": \"CustomizeProduct\",\n                \"value\": \"CustomizeProduct\"\n              },\n              {\n                \"displayValue\": \"Donate\",\n                \"value\": \"Donate\"\n              },\n              {\n                \"displayValue\": \"FindLocation\",\n                \"value\": \"FindLocation\"\n              },\n              {\n                \"displayValue\": \"InitiateCheckout\",\n                \"value\": \"InitiateCheckout\"\n              },\n              {\n                \"displayValue\": \"Lead\",\n                \"value\": \"Lead\"\n              },\n              {\n                \"displayValue\": \"Purchase\",\n                \"value\": \"Purchase\"\n              },\n              {\n                \"displayValue\": \"Schedule\",\n                \"value\": \"Schedule\"\n              },\n              {\n                \"displayValue\": \"Search\",\n                \"value\": \"Search\"\n              },\n              {\n                \"displayValue\": \"StartTrial\",\n                \"value\": \"StartTrial\"\n              },\n              {\n                \"displayValue\": \"SubmitApplication\",\n                \"value\": \"SubmitApplication\"\n              },\n              {\n                \"displayValue\": \"Subscribe\",\n                \"value\": \"Subscribe\"\n              },\n              {\n                \"displayValue\": \"ViewContent\",\n                \"value\": \"ViewContent\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"PageView\"\n          }\n        ]\n      },\n      {\n        \"value\": \"custom\",\n        \"displayValue\": \"Custom\",\n        \"subParams\": [\n          {\n            \"type\": \"TEXT\",\n            \"name\": \"customEventName\",\n            \"displayName\": \"\",\n            \"simpleValueType\": true\n          }\n        ]\n      },\n      {\n        \"value\": \"variable\",\n        \"displayValue\": \"Variable\",\n        \"subParams\": [\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"variableEventName\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [],\n            \"simpleValueType\": true\n          }\n        ]\n      }\n    ],\n    \"simpleValueType\": true,\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"enhancedEcommerce\",\n        \"paramValue\": true,\n        \"type\": \"NOT_EQUALS\"\n      }\n    ]\n  },\n  {\n    \"type\": \"RADIO\",\n    \"name\": \"eecEventName\",\n    \"displayName\": \"Event Name\",\n    \"radioItems\": [\n      {\n        \"value\": \"eec\",\n        \"displayValue\": \"Set automatically from dataLayer\"\n      }\n    ],\n    \"simpleValueType\": true,\n    \"help\": \"The Enhanced Ecommerce integration populates the Event Name automatically depending on what type of \\u003cstrong\\u003eecommerce\\u003c/strong\\u003e object was last pushed into dataLayer (\\\"detail\\\" -\\u003e \\\"ViewContent\\\", \\\"add\\\" -\\u003e \\\"AddToCart\\\", \\\"checkout\\\" -\\u003e \\\"InitiateCheckout\\\", \\\"purchase\\\" -\\u003e \\\"Purchase\\\").\",\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"enhancedEcommerce\",\n        \"paramValue\": true,\n        \"type\": \"EQUALS\"\n      }\n    ]\n  },\n  {\n    \"type\": \"SELECT\",\n    \"name\": \"consent\",\n    \"displayName\": \"Consent Granted (GDPR)\",\n    \"macrosInSelect\": true,\n    \"selectItems\": [\n      {\n        \"value\": true,\n        \"displayValue\": \"True\"\n      },\n      {\n        \"value\": false,\n        \"displayValue\": \"False\"\n      }\n    ],\n    \"simpleValueType\": true,\n    \"help\": \"If you set Consent Granted to \\u003cstrong\\u003efalse\\u003c/strong\\u003e, the pixel will not send any hits until a tag is fired where Consent Granted is set to \\u003cstrong\\u003etrue\\u003c/strong\\u003e. See \\u003ca href\\u003d\\\"https://developers.facebook.com/docs/facebook-pixel/implementation/gdpr/\\\"\\u003ethis article\\u003c/a\\u003e for more information.\"\n  },\n  {\n    \"simpleValueType\": true,\n    \"name\": \"advancedMatching\",\n    \"checkboxText\": \"Enable Advanced Matching\",\n    \"type\": \"CHECKBOX\"\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"metaCAPIOptInGroup\",\n    \"displayName\": \"Meta-enabled Conversions API integration\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"LABEL\",\n        \"name\": \"optInMetaCAPIConsent\",\n        \"displayName\": \"You hereby authorize and instruct Meta to set up a Meta-enabled Conversions API integration on your behalf, and you agree that your use of the integration will be subject to Meta’s \\u003ca href\\u003d\\\"https://www.facebook.com/legal/terms\\\"\\u003ePlatform Terms\\u003c/a\\u003e and \\u003ca href\\u003d\\\"https://www.facebook.com/legal/technology_terms\\\"\\u003eBusiness Tools Terms\\u003c/a\\u003e.\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"optInMetaCAPI\",\n        \"checkboxText\": \"Opt in to a Meta-enabled Conversions API integration\",\n        \"simpleValueType\": true,\n        \"defaultValue\": true,\n        \"alwaysInSummary\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"dataProcessingOptionsGroup\",\n    \"displayName\": \"Data Processing Options\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"subParams\": [\n      {\n        \"type\": \"LABEL\",\n        \"name\": \"dpoInfo\",\n        \"displayName\": \"Data Processing Options force this Facebook event to comply to regional regulations with regard to the processing and selling of user data. Read \\u003ca href\\u003d\\\"https://developers.facebook.com/docs/marketing-apis/data-processing-options\\\"\\u003ethis\\u003c/a\\u003e for more information about how to configure this section.\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"dpoLDU\",\n        \"checkboxText\": \"Limited Data Use (LDU)\",\n        \"simpleValueType\": true\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"dpoCountry\",\n        \"displayName\": \"Country\",\n        \"simpleValueType\": true,\n        \"defaultValue\": 0,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dpoLDU\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"valueValidators\": [\n          {\n            \"type\": \"NUMBER\"\n          }\n        ]\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"dpoState\",\n        \"displayName\": \"State\",\n        \"simpleValueType\": true,\n        \"defaultValue\": 0,\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"dpoLDU\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ],\n        \"valueValidators\": [\n          {\n            \"type\": \"NUMBER\"\n          }\n        ]\n      }\n    ]\n  },\n  {\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"advancedMatching\",\n        \"type\": \"EQUALS\",\n        \"paramValue\": true\n      }\n    ],\n    \"displayName\": \"Customer Information Data Parameters\",\n    \"name\": \"advancedMatchingGroup\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"type\": \"GROUP\",\n    \"subParams\": [\n      {\n        \"displayName\": \"\",\n        \"name\": \"advancedMatchingList\",\n        \"simpleTableColumns\": [\n          {\n            \"selectItems\": [\n              {\n                \"displayValue\": \"City\",\n                \"value\": \"ct\"\n              },\n              {\n                \"displayValue\": \"Country\",\n                \"value\": \"cn\"\n              },\n              {\n                \"displayValue\": \"Date of Birth\",\n                \"value\": \"db\"\n              },\n              {\n                \"displayValue\": \"Email\",\n                \"value\": \"em\"\n              },\n              {\n                \"displayValue\": \"External ID\",\n                \"value\": \"external_id\"\n              },\n              {\n                \"displayValue\": \"First Name\",\n                \"value\": \"fn\"\n              },\n              {\n                \"displayValue\": \"Gender\",\n                \"value\": \"ge\"\n              },\n              {\n                \"displayValue\": \"Last Name\",\n                \"value\": \"ln\"\n              },\n              {\n                \"displayValue\": \"Phone\",\n                \"value\": \"ph\"\n              },\n              {\n                \"displayValue\": \"State\",\n                \"value\": \"st\"\n              },\n              {\n                \"displayValue\": \"Zip Code\",\n                \"value\": \"zp\"\n              }\n            ],\n            \"defaultValue\": \"\",\n            \"displayName\": \"Parameter name\",\n            \"name\": \"name\",\n            \"isUnique\": true,\n            \"type\": \"SELECT\"\n          },\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Parameter value\",\n            \"name\": \"value\",\n            \"type\": \"TEXT\"\n          }\n        ],\n        \"type\": \"SIMPLE_TABLE\",\n        \"newRowButtonText\": \"Add parameter\",\n        \"valueValidators\": [\n          {\n            \"type\": \"NON_EMPTY\"\n          }\n        ]\n      }\n    ]\n  },\n  {\n    \"displayName\": \"Object Properties\",\n    \"name\": \"objectPropertiesGroup\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"type\": \"GROUP\",\n    \"subParams\": [\n      {\n        \"type\": \"LABEL\",\n        \"name\": \"enhancedEcommerceObject\",\n        \"displayName\": \"\\u003cstrong\\u003eWarning!\\u003c/strong\\u003e Object properties are populated automatically based on the most recent \\u003cstrong\\u003eecommerce\\u003c/strong\\u003e object pushed into dataLayer. If you add properties here that are already set by the integration (content_type, contents, num_items, value, currency), then the properties you add here will override those set automatically by the integration!\",\n        \"enablingConditions\": [\n          {\n            \"paramName\": \"enhancedEcommerce\",\n            \"paramValue\": true,\n            \"type\": \"EQUALS\"\n          }\n        ]\n      },\n      {\n        \"type\": \"SELECT\",\n        \"name\": \"objectPropertiesFromVariable\",\n        \"displayName\": \"Load Properties From Variable\",\n        \"macrosInSelect\": true,\n        \"selectItems\": [\n          {\n            \"value\": false,\n            \"displayValue\": \"False\"\n          }\n        ],\n        \"simpleValueType\": true,\n        \"help\": \"You can use a variable that returns a JavaScript object with the properties you want to use. This object will be merged with any additional properties you add via the table below. Any conflicts will be resolved in favor of the properties you add to the table.\"\n      },\n      {\n        \"name\": \"objectPropertyList\",\n        \"simpleTableColumns\": [\n          {\n            \"valueValidators\": [],\n            \"defaultValue\": \"\",\n            \"displayName\": \"Property Name\",\n            \"name\": \"name\",\n            \"isUnique\": true,\n            \"type\": \"TEXT\"\n          },\n          {\n            \"defaultValue\": \"\",\n            \"displayName\": \"Property Value\",\n            \"name\": \"value\",\n            \"type\": \"TEXT\"\n          }\n        ],\n        \"type\": \"SIMPLE_TABLE\",\n        \"newRowButtonText\": \"Add property\"\n      }\n    ]\n  },\n  {\n    \"displayName\": \"More Settings\",\n    \"name\": \"moreSettingsGroup\",\n    \"groupStyle\": \"ZIPPY_CLOSED\",\n    \"type\": \"GROUP\",\n    \"subParams\": [\n      {\n        \"help\": \"Facebook collects some metadata (e.g. structured data) and user interactions (e.g. clicks) automatically. Check this box to disable this automatic configuration of the pixel.\",\n        \"simpleValueType\": true,\n        \"name\": \"disableAutoConfig\",\n        \"checkboxText\": \"Disable Automatic Configuration\",\n        \"type\": \"CHECKBOX\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"disablePushState\",\n        \"checkboxText\": \"Disable History Event Tracking\",\n        \"simpleValueType\": true,\n        \"help\": \"The Facebook Pixel tracks history events (pushState and replaceState) automatically as PageViews. Check this box to prevent the pixel from tracking such events automatically.\"\n      },\n      {\n        \"type\": \"TEXT\",\n        \"name\": \"eventId\",\n        \"displayName\": \"Event ID\",\n        \"simpleValueType\": true,\n        \"help\": \"Set the Event ID parameter in case you are tracking the same event server-side as well. The Event ID can be used to deduplicate the same event if sent from multiple sources. See more \\u003ca href\\u003d\\\"https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events/\\\"\\u003ehere\\u003c/a\\u003e.\"\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst createQueue = require('createQueue');\nconst callInWindow = require('callInWindow');\nconst aliasInWindow = require('aliasInWindow');\nconst copyFromWindow = require('copyFromWindow');\nconst setInWindow = require('setInWindow');\nconst injectScript = require('injectScript');\nconst makeTableMap = require('makeTableMap');\nconst makeNumber = require('makeNumber');\nconst getType = require('getType');\nconst copyFromDataLayer = require('copyFromDataLayer');\nconst math = require('Math');\nconst log = require('logToConsole');\nconst getUrl = require('getUrl');\n\nconst PARAM_BUILDER_PRIMARY_SCRIPT_URL = 'https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js';\nconst PARAM_BUILDER_FALLBACK_SCRIPT_URL = 'https://unpkg.com/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js';\n\nconst initIds = copyFromWindow('_fbq_gtm_ids') || [];\nconst pixelIds = data.pixelId;\nconst standardEventNames = ['AddPaymentInfo', 'AddToCart', 'AddToWishlist', 'CompleteRegistration', 'Contact', 'CustomizeProduct', 'Donate', 'FindLocation', 'InitiateCheckout', 'Lead', 'PageView', 'Purchase', 'Schedule', 'Search', 'StartTrial', 'SubmitApplication', 'Subscribe', 'ViewContent'];\nconst ecommerce = copyFromDataLayer('ecommerce', 1);\nconst eventModel = copyFromDataLayer('eventModel', 1);\n\n// Helper methods\nconst fail = msg => {\n  log(msg);\n  data.gtmOnFailure();\n};\n\nconst mergeObj = (obj, obj2) => {\n  for (let key in obj2) {\n    if (obj2.hasOwnProperty(key)) {\n      obj[key] = obj2[key];\n    }\n  }\n  return obj;\n};\n\nconst parseEecObj = prod => {\n  return {\n    id: prod.id,\n    quantity: prod.quantity\n  };\n};\n\n// Initialize EEC integration\nlet eventName, action, eecObjectProps;\nif (data.enhancedEcommerce) {\n  if (!ecommerce) return fail('Facebook Pixel: No valid \"ecommerce\" object found in dataLayer');\n  if (ecommerce.detail) { eventName = 'ViewContent'; action = 'detail'; }\n  else if (ecommerce.add) { eventName = 'AddToCart'; action = 'add'; }\n  else if (ecommerce.checkout) { eventName = 'InitiateCheckout'; action = 'checkout'; }\n  else if (ecommerce.purchase) { eventName = 'Purchase'; action = 'purchase'; }\n  else return fail('Facebook Pixel: Most recently pushed \"ecommerce\" object must be one of types \"detail\", \"add\", \"checkout\" or \"purchase\".');\n\n  if (!ecommerce[action].products || getType(ecommerce[action].products) !== 'array') return fail('Facebook pixel: Most recently pushed \"ecommerce\" object did not have a valid \"products\" array.');\n  eecObjectProps = {\n    content_type: 'product',\n    contents: ecommerce[action].products.map(parseEecObj),\n    value: ecommerce[action].products.reduce((acc, cur) => {\n      const curVal = math.round(makeNumber(cur.price || 0) * (cur.quantity || 1) * 100) / 100;\n      return acc + curVal;\n    }, 0.0),\n    currency: ecommerce.currencyCode || 'USD'\n  };\n  if (['InitiateCheckout', 'Purchase'].indexOf(eventName) > -1) eecObjectProps.num_items = ecommerce[action].products.reduce((acc,cur) => {\n    return acc + makeNumber(cur.quantity || 1);\n  }, 0);\n}\n\n// Prepare event variables\nconst cidParams = data.advancedMatchingList && data.advancedMatchingList.length ? makeTableMap(data.advancedMatchingList, 'name', 'value') : {};\nconst objectProps = data.objectPropertyList && data.objectPropertyList.length ? makeTableMap(data.objectPropertyList, 'name', 'value') : {};\nconst objectPropsFromVar = getType(data.objectPropertiesFromVariable) === 'object' ? data.objectPropertiesFromVariable : {};\nlet customData = {};\n\neventName = eventName || (data.eventName === 'custom' ? data.customEventName : (data.eventName === 'variable' ? data.variableEventName : data.standardEventName));\n\nconst command = standardEventNames.indexOf(eventName) === -1 ? 'trackSingleCustom' : 'trackSingle';\nconst consent = data.consent === false ? 'revoke' : 'grant';\n\n// Utility function to use either fbq.queue[]\n// (if the FB SDK hasn't loaded yet), or fbq.callMethod()\n// if the SDK has loaded.\nconst getFbq = () => {\n  // Return the existing 'fbq' global method if available\n  let fbq = copyFromWindow('fbq');\n  if (fbq) {\n    return fbq;\n  }\n\n  // Initialize the 'fbq' global method to either use\n  // fbq.callMethod or fbq.queue)\n  setInWindow('fbq', function() {\n    const callMethod = copyFromWindow('fbq.callMethod.apply');\n    if (callMethod) {\n      callInWindow('fbq.callMethod.apply', null, arguments);\n    } else {\n      callInWindow('fbq.queue.push', arguments);\n    }\n  });\n  aliasInWindow('_fbq', 'fbq');\n\n  // Create the fbq.queue\n  createQueue('fbq.queue');\n\n  // Return the global 'fbq' method, created above\n  return copyFromWindow('fbq');\n};\n\n// Get reference to the global method\nconst fbq = getFbq();\n\nfbq('consent', consent);\n\n // Set Data Processing Options\nif (data.dpoLDU) {\n  fbq('dataProcessingOptions', ['LDU'], makeNumber(data.dpoCountry), makeNumber(data.dpoState));\n}\n\n// Monitoring agent string for Tag Setup\nconst agentName = 'tmSimo-GTM-WebTemplate';\nconst version = '2.0.9';\nconst agentSuffix = (data.enhancedEcommerce ? '-EEC' : '') + (data.useGA4Ecommerce ? '-GA4' : '') + (data.optInMetaCAPI !== false ? '-fcg' : '');\n\n// Handle multiple, comma-separated pixel IDs,\n// and initialize each ID if not done already.\npixelIds.split(',').forEach(pixelId => {\n  if (initIds.indexOf(pixelId) === -1) {\n\n    // If the user has chosen to disable automatic configuration\n    if (data.disableAutoConfig) {\n      fbq('set', 'autoConfig', false, pixelId);\n    }\n\n    // If the user has chosen to disable pushState and replaceState tracking\n    if (data.disablePushState) {\n      setInWindow('fbq.disablePushState', true);\n    }\n\n    // Signal opt-in to Meta-enabled CAPI integration before init. Treat\n    // undefined as opted-in so tags created before this field existed\n    // continue to opt in without requiring the advertiser to re-save the tag.\n    if (data.optInMetaCAPI !== false) {\n      fbq('optinMetaEnabledCapi', pixelId);\n    }\n\n    // Initialize pixel and store in global array\n    fbq('init', pixelId, cidParams);\n\n    // Monitoring agent string for Tag Setup\n    const agentString = agentName + '-' + version + agentSuffix;\n    fbq('set','agent', agentString, pixelId);\n\n    initIds.push(pixelId);\n    setInWindow('_fbq_gtm_ids', initIds, true);\n\n    // If this first-time init included cidParams, mark the page as\n    // already-initialized-with-cidParams so we never re-init for it.\n    if (data.advancedMatchingList && data.advancedMatchingList.length) {\n      setInWindow('_fbq_gtm_cidparams_initialized', true, true);\n    }\n  }\n});\n\n// Re-init pixels with cidParams when:\n//   - this tag fire actually has Advanced Matching data, AND\n//   - we have NOT yet initialized any pixel with cidParams on this page.\nif (data.advancedMatchingList && data.advancedMatchingList.length) {\n  pixelIds.split(',').forEach(pixelId => {\n    if (initIds.indexOf(pixelId) !== -1) {\n      fbq('init', pixelId, cidParams);\n      const reinitAgentString = agentName + '-' + version + agentSuffix + '-REINIT';\n      fbq('set', 'agent', reinitAgentString, pixelId);\n    }\n  });\n}\n\nconst fireEvent = (resolvedCustomData) => {\n  const mergedCustom = mergeObj(resolvedCustomData, eecObjectProps || {});\n  const mergedObjectProps = mergeObj(objectPropsFromVar, objectProps);\n  const finalObjectProps = mergeObj(mergedCustom, mergedObjectProps);\n\n  pixelIds.split(',').forEach(pixelId => {\n    if (data.eventId) {\n      fbq(command, pixelId, eventName, finalObjectProps, {eventID: data.eventId});\n    } else {\n      fbq(command, pixelId, eventName, finalObjectProps);\n    }\n  });\n};\n\nif (data.useGA4Ecommerce) {\n  const firstPixelId = pixelIds.split(',')[0];\n  callInWindow(\n    'fbq',\n    'gateCheck',\n    'enable_gtm_ga4_structure',\n    function(gateName, pixelID) {\n      // Set user_data from eventModel into cidParams\n      if (eventModel && eventModel.user_data) {\n        var ud = eventModel.user_data;\n        if (ud.email_address && !cidParams.em) cidParams.em = ud.email_address;\n        if (ud.phone_number && !cidParams.ph) cidParams.ph = ud.phone_number;\n        if (ud.address) {\n          if (ud.address.first_name && !cidParams.fn) cidParams.fn = ud.address.first_name;\n          if (ud.address.last_name && !cidParams.ln) cidParams.ln = ud.address.last_name;\n          if (ud.address.city && !cidParams.ct) cidParams.ct = ud.address.city;\n          if (ud.address.region && !cidParams.st) cidParams.st = ud.address.region;\n          if (ud.address.postal_code && !cidParams.zp) cidParams.zp = ud.address.postal_code;\n          if (ud.address.country && !cidParams.country) cidParams.country = ud.address.country;\n        }\n        if (ud.fb_login_id && !cidParams.fb_login_id) cidParams.fb_login_id = ud.fb_login_id;\n\n        pixelIds.split(',').forEach(function(pixelId) {\n          fbq('init', pixelId, cidParams);\n        });\n      }\n\n      // Set custom_data from eventModel\n      if (eventModel) {\n        if (eventModel.currency) customData.currency = eventModel.currency;\n        if (eventModel.value) customData.value = eventModel.value;\n        if (eventModel.search_term) customData.search_string = eventModel.search_term;\n        if (eventModel.transaction_id) customData.order_id = eventModel.transaction_id;\n        if (eventModel.items && getType(eventModel.items) === 'array') {\n          customData.contents = eventModel.items.map(function(item) {\n            return {\n              id: (item.item_id || item.item_name) || undefined,\n              item_price: item.price || undefined,\n              quantity: item.quantity || undefined\n            };\n          });\n        }\n      }\n\n      fireEvent(customData);\n    },\n    function(gateName, pixelID) {\n      fireEvent(customData);\n    },\n    firstPixelId\n  );\n} else {\n  fireEvent(customData);\n}\n\n// Inject Param Builder script if enabled\nconst onParamBuilderFailure = () => {\n  log('Facebook Pixel: Failed to load clientParamBuilder script');\n  setInWindow('_fbq_param_builder_status', 'complete', true);\n  data.gtmOnSuccess();\n};\n\n// Param Builder callback - called after script loads\nconst processAndCollectAllParams = () => {\n  log(\"ParamBuilder script loaded successfully, processing and collecting all params...\");\n  const clientParamBuilder = copyFromWindow('clientParamBuilder');\n  if (!clientParamBuilder) {\n    log(\"ERROR: clientParamBuilder wasn't loaded correctly.\");\n    setInWindow('_fbq_param_builder_status', 'complete', true);\n    data.gtmOnSuccess();\n    return;\n  }\n\n  const currentPageUrl = getUrl();\n\n  // Check which method exists and call it via callInWindow\n  const hasProcessAndCollectAllParams = copyFromWindow('clientParamBuilder.processAndCollectAllParams');\n  const hasProcessAndCollectParams = copyFromWindow('clientParamBuilder.processAndCollectParams');\n\n  if (hasProcessAndCollectAllParams) {\n    callInWindow('clientParamBuilder.processAndCollectAllParams', currentPageUrl);\n    log(\"processAndCollectAllParams completed successfully.\");\n    setInWindow('_fbq_param_builder_status', 'complete', true);\n    data.gtmOnSuccess();\n  } else if (hasProcessAndCollectParams) {\n    callInWindow('clientParamBuilder.processAndCollectParams', currentPageUrl);\n    log(\"processAndCollectParams completed successfully.\");\n    setInWindow('_fbq_param_builder_status', 'complete', true);\n    data.gtmOnSuccess();\n  } else {\n    log(\"ERROR: Neither processAndCollectAllParams nor processAndCollectParams methods found.\");\n    data.gtmOnFailure();\n  }\n};\n\nconst loadParamBuilderFallback = () => {\n  injectScript(PARAM_BUILDER_FALLBACK_SCRIPT_URL, processAndCollectAllParams, onParamBuilderFailure, PARAM_BUILDER_FALLBACK_SCRIPT_URL);\n};\n\n\nfunction gtmSuccess() {\n  const status = copyFromWindow('_fbq_param_builder_status');\n\n  // If it's done OR currently downloading, skip injecting it again!\n  if (status === 'complete' || status === 'loading') {\n    return data.gtmOnSuccess();\n  }\n\n  // Immediately lock the state synchronously so Tag 2 doesn't enter this block\n  setInWindow('_fbq_param_builder_status', 'loading', true);\n\n  var firstPixelId = pixelIds.split(',')[0];\n\n  callInWindow(\n    'fbq',\n    'gateCheck',\n    'enable_gtm_parambuilder',\n    function(gateName, pixelID) {\n      injectScript(PARAM_BUILDER_PRIMARY_SCRIPT_URL, processAndCollectAllParams, loadParamBuilderFallback, PARAM_BUILDER_PRIMARY_SCRIPT_URL);\n    },\n    function(gateName, pixelID) {\n      data.gtmOnSuccess();\n    },\n    firstPixelId\n  );\n}\n\n// Use the URL as the cache token (matches original paramBuilder template)\n\ninjectScript('https://connect.facebook.net/en_US/fbevents.js', gtmSuccess, data.gtmOnFailure, 'fbPixel');\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_globals\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keys\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq_gtm\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq_gtm_ids\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq_gtm_cidparams_initialized\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.callMethod.apply\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.queue.push\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.queue\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"fbq.disablePushState\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"_fbq_param_builder_status\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"clientParamBuilder\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"clientParamBuilder.processAndCollectAllParams\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"clientParamBuilder.processAndCollectParams\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"inject_script\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"urls\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"https://connect.facebook.net/en_US/fbevents.js\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"https://unpkg.com/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"logging\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"environments\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"debug\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"read_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"allowedKeys\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"specific\"\n          }\n        },\n        {\n          \"key\": \"keyPatterns\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"ecommerce\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"eventModel\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"get_url\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"urlParts\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        },\n        {\n          \"key\": \"queriesAllowed\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"any\"\n          }\n        }\n      ]\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios:\n- name: Library is injected\n  code: |+\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // 1. Verify the Facebook Pixel URL was requested\n    assertThat(injectedUrls).contains('https://connect.facebook.net/en_US/fbevents.js');\n\n    // 2. Verify the Param Builder URL was requested\n    assertThat(injectedUrls).contains('https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js');\n\n    // 3. Verify the template finished successfully\n    assertApi('gtmOnSuccess').wasCalled();\n\n- name: fbq does not exist - method created\n  code: |-\n    let fbq;\n\n    mock('copyFromWindow', key => {\n      // 1. The specific logic for this test (mocking fbq absence)\n      if (key === 'fbq') return fbq;\n\n      // 2. The required logic for the template to finish (ParamBuilder mocks)\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    mock('createQueue', key => {});\n\n    mock('setInWindow', (key, val) => {\n      if (key === 'fbq') fbq = val;\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('aliasInWindow').wasCalledWith('_fbq', 'fbq');\n    assertApi('setInWindow').wasCalled();\n    assertApi('gtmOnSuccess').wasCalled();\n- name: fbq exists - method copied\n  code: |-\n    mock('setInWindow', key => {\n      if (key === 'fbq') fail('setInWindow called with fbq even though variable exists');\n    });\n\n    mock('createQueue', key => {});\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: makeTableMap called\n  code: |-\n    mockData.advancedMatching = true;\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('makeTableMap').wasCalledWith(mockData.advancedMatchingList, 'name', 'value');\n    assertApi('makeTableMap').wasCalledWith(mockData.objectPropertyList, 'name', 'value');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Consent set\n  code: |-\n    mock('copyFromWindow', key => {\n      // 1. The specific logic for this test (checking fbq consent)\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'consent') {\n          assertThat(arguments[1], 'Consent set incorrectly').isEqualTo('grant');\n        }\n      };\n\n      // 2. The required logic for the template to finish (ParamBuilder mocks)\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: DPO LDU set\n  code: |-\n    mockData.dpoLDU = true;\n    mockData.dpoCountry = '0';\n    mockData.dpoState = '0';\n\n    mock('copyFromWindow', key => {\n      // 1. The specific logic for this test (checking fbq DPO options)\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'consent') {\n          assertThat(arguments[1], 'Consent set incorrectly').isEqualTo('grant');\n        }\n        if (arguments[0] === 'dataProcessingOptions') {\n          assertThat(arguments[1], 'LDU array value not set').isEqualTo(['LDU']);\n          assertThat(arguments[2], 'LDU country not set').isEqualTo(0);\n          assertThat(arguments[3], 'LDU state not set').isEqualTo(0);\n        }\n      };\n\n      // 2. The required logic for the template to finish (ParamBuilder mocks)\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: DPO LDU not set\n  code: |-\n    mock('copyFromWindow', key => {\n      // 1. The specific logic for this test (checking fbq consent and ensuring DPO is NOT called)\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'consent') {\n          assertThat(arguments[1], 'Consent set incorrectly').isEqualTo('grant');\n        }\n        if (arguments[0] === 'dataProcessingOptions') {\n          fail('dataProcessingOptions called even though DPO was not set');\n        }\n      };\n\n      // 2. The required logic for the template to finish (ParamBuilder mocks)\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Pixel IDs set - do not initialize\n  code: |-\n    // Clear advancedMatchingList so the cidParams update block is skipped,\n    // isolating the init guard behavior.\n    mockData.advancedMatchingList = [];\n\n    mock('copyFromWindow', key => {\n      // 1. The specific logic for this test (checking initialized IDs and preventing re-init)\n      if (key === '_fbq_gtm_ids') return ['12345', '23456'];\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'init') fail('init called even though pixel IDs already initialized');\n      };\n\n      // 2. The required logic for the template to finish (ParamBuilder mocks)\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Pixel IDs not set - run init process\n  code: \"mockData.enhancedEcommerce = true;\\n\\nmockData.objectPropertyList = {};\\n\\\n    \\n\\n\\nmock('copyFromDataLayer', key => {\\n\\n  if (key === 'ecommerce') return\\\n    \\ {\\n\\n    currencyCode: 'EUR',\\n\\n    detail: {\\n\\n      products: mockEec.gtm.products\\n\\\n    \\n    }\\n\\n  };\\n\\n});\\n\\n\\n\\nlet index = 0;\\n\\nmock('copyFromWindow', key =>\\\n    \\ {\\n\\n  // 1. The specific logic for this test (checking fbq trackSingle calls)\\n\\\n    \\n  if (key === 'fbq') return function() {\\n\\n    if (arguments[0] === 'trackSingle')\\\n    \\ {\\n\\n      assertThat(arguments[1], 'trackSingle called with incorrect pixel\\\n    \\ ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\n      assertThat(arguments[2],\\\n    \\ 'trackSingle called with incorrect event name').isEqualTo('ViewContent');\\n\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\n      index += 1;\\n\\n    }\\n\\n  };\\n\\n\\n\\n  // 2. The required logic for the\\\n    \\ template to finish (ParamBuilder mocks)\\n\\n  if (key === 'clientParamBuilder')\\\n    \\ return {};\\n\\n  if (key === 'clientParamBuilder.processAndCollectAllParams')\\\n    \\ return () => {};\\n\\n});\\n\\n      \\n\\n// Call runCode to run the template's code.\\n\\\n    \\nrunCode(mockData);\\n\\n\\n\\n// Verify that the tag finished successfully.\\n\\n\\\n    assertThat(index, 'trackSingle called incorrect number of times').isEqualTo(2);\\n\\\n    \\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: cidParams updated on subsequent fire when pixel already initialized\n  code: |-\n    mockData.advancedMatchingList = [\n      {name: 'em', value: 'user@example.com'}\n    ];\n\n    let initCalls = [];\n    mock('copyFromWindow', key => {\n      // Pixels already initialized\n      if (key === '_fbq_gtm_ids') return ['12345', '23456'];\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'init') {\n          initCalls.push({pixelId: arguments[1], cidParams: arguments[2]});\n        }\n      };\n\n      // Required ParamBuilder mocks\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    runCode(mockData);\n\n    // Init guard skipped (pixels already initialized).\n    // Re-init block fires init for each already-initialized pixel with cidParams.\n    assertThat(initCalls.length).isEqualTo(2);\n    assertThat(initCalls[0].pixelId).isEqualTo('12345');\n    assertThat(initCalls[0].cidParams.em).isEqualTo('user@example.com');\n    assertThat(initCalls[1].pixelId).isEqualTo('23456');\n    assertThat(initCalls[1].cidParams.em).isEqualTo('user@example.com');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: cidParams not updated on subsequent fire when advancedMatchingList is empty\n  code: |-\n    mockData.advancedMatchingList = [];\n\n    mock('copyFromWindow', key => {\n      // Simulate pixel already initialized\n      if (key === '_fbq_gtm_ids') return ['12345', '23456'];\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'init') {\n          fail('init called even though advancedMatchingList is empty and pixels are already initialized');\n        }\n      };\n\n      // Required ParamBuilder mocks\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    runCode(mockData);\n\n    assertApi('gtmOnSuccess').wasCalled();\n- name: cidParams re-init runs on every fire with advancedMatchingList\n  code: |-\n    mockData.advancedMatchingList = [\n      {name: 'em', value: 'newuser@example.com'}\n    ];\n\n    let initCalls = [];\n    mock('copyFromWindow', key => {\n      // Pixels already initialized on a prior fire\n      if (key === '_fbq_gtm_ids') return ['12345', '23456'];\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'init') {\n          initCalls.push({pixelId: arguments[1], cidParams: arguments[2]});\n        }\n      };\n\n      // Required ParamBuilder mocks\n      if (key === 'clientParamBuilder') return {};\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n    });\n\n    runCode(mockData);\n\n    // Re-init block fires init for each already-initialized pixel with the\n    // latest cidParams, regardless of any prior fire.\n    assertThat(initCalls.length).isEqualTo(2);\n    assertThat(initCalls[0].pixelId).isEqualTo('12345');\n    assertThat(initCalls[0].cidParams.em).isEqualTo('newuser@example.com');\n    assertThat(initCalls[1].pixelId).isEqualTo('23456');\n    assertThat(initCalls[1].cidParams.em).isEqualTo('newuser@example.com');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: Send standard event\n  code: \"const eventParams = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n};\\n\\nlet index\\\n    \\ = 0;\\nmock('copyFromWindow', key => {\\n  // 1. The specific logic for this test\\\n    \\ (checking fbq trackSingle calls)\\n  if (key === 'fbq') return function() {\\n\\\n    \\    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1], 'trackSingle\\\n    \\ called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo(mockData.standardEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(eventParams);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n\\n  // 2. The required logic for the template\\\n    \\ to finish (ParamBuilder mocks)\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n      \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\\n    \\n// Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Send custom event\n  code: \"mockData.eventName = 'custom';\\n\\nconst eventParams = {\\n  prop1: 'val1',\\n\\\n    \\  prop2: 'val2'\\n};\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  //\\\n    \\ 1. The specific logic for this test (checking fbq trackSingleCustom calls)\\n\\\n    \\  if (key === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingleCustom')\\\n    \\ {\\n      assertThat(arguments[1], 'trackSingleCustom called with incorrect pixel\\\n    \\ ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n      assertThat(arguments[2],\\\n    \\ 'trackSingleCustom called with incorrect event name').isEqualTo(mockData.customEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingleCustom called with incorrect event\\\n    \\ parameters').isEqualTo(eventParams);\\n      index += 1;\\n    }\\n  };\\n\\n  //\\\n    \\ 2. The required logic for the template to finish (ParamBuilder mocks)\\n  if\\\n    \\ (key === 'clientParamBuilder') return {};\\n  if (key === 'clientParamBuilder.processAndCollectAllParams')\\\n    \\ return () => {};\\n});\\n      \\n// Call runCode to run the template's code.\\n\\\n    runCode(mockData);\\n\\n// Verify that the tag finished successfully.\\nassertThat(index,\\\n    \\ 'trackSingleCustom called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Send variable event with standard name\n  code: \"mockData.eventName = 'variable';\\nmockData.variableEventName = 'PageView';\\n\\\n    \\nconst eventParams = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n};\\n\\nlet index =\\\n    \\ 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return function()\\\n    \\ {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo(mockData.variableEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(eventParams);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Send variable event with custom name\n  code: \"mockData.eventName = 'variable';\\nmockData.variableEventName = 'custom';\\n\\\n    \\nconst eventParams = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n};\\n\\nlet index =\\\n    \\ 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return function()\\\n    \\ {\\n    if (arguments[0] === 'trackSingleCustom') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingleCustom called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingleCustom called with incorrect event\\\n    \\ name').isEqualTo(mockData.variableEventName);\\n      assertThat(arguments[3],\\\n    \\ 'trackSingleCustom called with incorrect event parameters').isEqualTo(eventParams);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingleCustom\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Send event parameters from a variable\n  code: \"mockData.objectPropertiesFromVariable = {\\n  prop1: 'val1',\\n  prop2: 'val2'\\n\\\n    };\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ function() {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo(mockData.standardEventName);\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockData.objectPropertiesFromVariable);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce integration fails with invalid object\n  code: \"mockData.enhancedEcommerce = true;\\n\\n// Override the global setup for this\\\n    \\ specific test so it returns undefined\\nmock('copyFromDataLayer', (key) => {\\n\\\n    \\  return undefined; \\n});\\n\\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\\n    \\n// Verify that the tag finished successfully.\\nassertApi('logToConsole').wasCalledWith('Facebook\\\n    \\ Pixel: No valid \\\"ecommerce\\\" object found in dataLayer');\\nassertApi('gtmOnFailure').wasCalled();\\n\\\n    assertApi('gtmOnSuccess').wasNotCalled();\"\n- name: Enhanced Ecommerce integration fails with invalid action\n  code: |-\n    mockData.enhancedEcommerce = true;\n\n    mock('copyFromDataLayer', key => {\n      if (key === 'ecommerce') return {\n        invalid: true\n      };\n    });\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('logToConsole').wasCalledWith('Facebook Pixel: Most recently pushed \"ecommerce\" object must be one of types \"detail\", \"add\", \"checkout\" or \"purchase\".');\n    assertApi('gtmOnFailure').wasCalled();\n    assertApi('gtmOnSuccess').wasNotCalled();\n- name: Enhanced Ecommerce ViewContent works\n  code: \"mockData.enhancedEcommerce = true;\\nmockData.objectPropertyList = {};\\n\\n\\\n    mock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return {\\n    currencyCode:\\\n    \\ 'EUR',\\n    detail: {\\n      products: mockEec.gtm.products\\n    }\\n  };\\n});\\n\\\n    \\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  // 1. The specific logic\\\n    \\ for this test (checking fbq trackSingle calls)\\n  if (key === 'fbq') return\\\n    \\ function() {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('ViewContent');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n\\n  // 2. The required logic for the template\\\n    \\ to finish (ParamBuilder mocks)\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n      \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\\n    \\n// Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce AddToCart works\n  code: \"mockData.enhancedEcommerce = true;\\nmockData.objectPropertyList = {};\\n\\n\\\n    mock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return {\\n    currencyCode:\\\n    \\ 'EUR',\\n    add: {\\n      products: mockEec.gtm.products\\n    }\\n  };\\n});\\n\\\n    \\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ function() {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('AddToCart');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce InitiateCheckout works\n  code: \"mockData.enhancedEcommerce = true;\\nmockEec.fb.num_items = 3;\\nmockData.objectPropertyList\\\n    \\ = {};\\n\\nmock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return\\\n    \\ {\\n    currencyCode: 'EUR',\\n    checkout: {\\n      products: mockEec.gtm.products\\n\\\n    \\    }\\n  };\\n});\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key\\\n    \\ === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle') {\\n\\\n    \\      assertThat(arguments[1], 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('InitiateCheckout');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Enhanced Ecommerce Purchase works\n  code: \"mockData.enhancedEcommerce = true;\\nmockEec.fb.num_items = 3;\\nmockData.objectPropertyList\\\n    \\ = {};\\n\\nmock('copyFromDataLayer', key => {\\n  if (key === 'ecommerce') return\\\n    \\ {\\n    currencyCode: 'EUR',\\n    purchase: {\\n      products: mockEec.gtm.products\\n\\\n    \\    }\\n  };\\n});\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if (key\\\n    \\ === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle') {\\n\\\n    \\      assertThat(arguments[1], 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('Purchase');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Object merge with variable and list works\n  code: \"mockData.objectPropertiesFromVariable = {\\n  prop1: 'var1',\\n  prop2: 'var2',\\n\\\n    \\  prop3: 'var3'\\n};\\n\\nconst expected = {\\n  prop1: 'val1',\\n  prop2: 'val2',\\n\\\n    \\  prop3: 'var3'\\n};\\n\\nlet index = 0;\\nmock('copyFromWindow', key => {\\n  if\\\n    \\ (key === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle')\\\n    \\ {\\n      assertThat(arguments[1], 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('PageView');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(expected);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Object merge with variable, list and eec works\n  code: \"mockData.enhancedEcommerce = true;\\nmockData.objectPropertiesFromVariable\\\n    \\ = {\\n  content_type: 'product_group'\\n};\\nmockData.objectPropertyList = [{\\n\\\n    \\  name: 'currency',\\n  value: 'USD'\\n}];\\nmockEec.fb.num_items = 3;\\nmockEec.fb.content_type\\\n    \\ = 'product_group';\\nmockEec.fb.currency = 'USD';\\n\\nmock('copyFromDataLayer',\\\n    \\ key => {\\n  if (key === 'ecommerce') return {\\n    currencyCode: 'EUR',\\n  \\\n    \\  purchase: {\\n      products: mockEec.gtm.products\\n    }\\n  };\\n});\\n\\nlet\\\n    \\ index = 0;\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return function()\\\n    \\ {\\n    if (arguments[0] === 'trackSingle') {\\n      assertThat(arguments[1],\\\n    \\ 'trackSingle called with incorrect pixel ID').isEqualTo(mockData.pixelId.split(',')[index]);\\n\\\n    \\      assertThat(arguments[2], 'trackSingle called with incorrect event name').isEqualTo('Purchase');\\n\\\n    \\      assertThat(arguments[3], 'trackSingle called with incorrect event parameters').isEqualTo(mockEec.fb);\\n\\\n    \\      index += 1;\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return {};\\n\\\n    \\  if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\\n\\\n    });\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\n\\\n    // Verify that the tag finished successfully.\\nassertThat(index, 'trackSingle\\\n    \\ called incorrect number of times').isEqualTo(2);\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: Send event ID\n  code: \"mockData.eventId = 'eventId';\\n\\nmock('copyFromWindow', key => {\\n  if (key\\\n    \\ === 'fbq') return function() {\\n    if (arguments[0] === 'trackSingle') {\\n\\\n    \\      assertThat(arguments[4], 'eventID not included in hit').isEqualTo({eventID:\\\n    \\ mockData.eventId});\\n    }\\n  };\\n  if (key === 'clientParamBuilder') return\\\n    \\ {};\\n  if (key === 'clientParamBuilder.processAndCollectAllParams') return ()\\\n    \\ => {};\\n});\\n     \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\\n    \\n// Verify that the tag finished successfully.\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: ParamBuilder processAndCollectAllParams success\n  code: \"mock('injectScript', (url, onsuccess, onfailure, token) => {\\n  onsuccess();\\n\\\n    });\\n\\n// Replaced the basic mock with the callback-triggering mock\\nmock('callInWindow',\\\n    \\ (propName, arg1, arg2, arg3) => {\\n  if (propName === 'fbq' && arg1 === 'gateCheck')\\\n    \\ {\\n    if (typeof arg3 === 'function') {\\n      arg3(true);\\n    }\\n  }\\n  return\\\n    \\ true; \\n});\\n\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ () => {};\\n  if (key === 'clientParamBuilder') return {};\\n  if (key === 'clientParamBuilder.processAndCollectAllParams')\\\n    \\ return () => {};\\n  if (key === 'clientParamBuilder.processAndCollectParams')\\\n    \\ return undefined;\\n});\\n\\nrunCode(mockData);\\n\\nassertApi('gtmOnSuccess').wasCalled();\\n\\\n    assertApi('gtmOnFailure').wasNotCalled();\"\n- name: ParamBuilder processAndCollectParams success\n  code: \"mock('injectScript', (url, onsuccess, onfailure, token) => {\\n  onsuccess();\\n\\\n    });\\n\\n// Use the upgraded mock that triggers the callback\\nmock('callInWindow',\\\n    \\ (propName, arg1, arg2, arg3) => {\\n  if (propName === 'fbq' && arg1 === 'gateCheck')\\\n    \\ {\\n    if (typeof arg3 === 'function') {\\n      arg3(true);\\n    }\\n  }\\n  return\\\n    \\ true; \\n});\\n\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ () => {};\\n  if (key === 'clientParamBuilder') return {};\\n  if (key === 'clientParamBuilder.processAndCollectAllParams')\\\n    \\ return undefined;\\n  if (key === 'clientParamBuilder.processAndCollectParams')\\\n    \\ return () => {};\\n});\\n\\nrunCode(mockData);\\n\\nassertApi('gtmOnSuccess').wasCalled();\\n\\\n    assertApi('gtmOnFailure').wasNotCalled();\"\n- name: ParamBuilder loaded failed\n  code: \"mock('injectScript', (url, onsuccess, onfailure, token) => {\\n  onsuccess();\\n\\\n    });\\n\\n// Use the upgraded mock that triggers the callback\\nmock('callInWindow',\\\n    \\ (propName, arg1, arg2, arg3) => {\\n  if (propName === 'fbq' && arg1 === 'gateCheck')\\\n    \\ {\\n    if (typeof arg3 === 'function') {\\n      arg3(true);\\n    }\\n  }\\n  return\\\n    \\ true; \\n});\\n\\nmock('copyFromWindow', key => {\\n  if (key === 'fbq') return\\\n    \\ () => {};\\n  if (key === 'clientParamBuilder') return {};\\n  // Both methods\\\n    \\ return undefined to trigger the failure block\\n  if (key === 'clientParamBuilder.processAndCollectAllParams')\\\n    \\ return undefined;\\n  if (key === 'clientParamBuilder.processAndCollectParams')\\\n    \\ return undefined;\\n});\\n\\nrunCode(mockData);\\n\\nassertApi('gtmOnSuccess').wasNotCalled();\\n\\\n    assertApi('gtmOnFailure').wasCalled();\"\n- name: optInMetaCAPI true - fbq optin signal fires before init\n  code: |-\n    mockData.optInMetaCAPI = true;\n    let calls = [];\n    mock('callInWindow', (propName, arg1, arg2, arg3) => {\n      if (propName === 'fbq' && arg1 === 'gateCheck') {\n        if (typeof arg3 === 'function') arg3(true);\n      }\n      return true;\n    });\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        calls.push(arguments[0]);\n      };\n      if (key === 'fbq.callMethod.apply') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return { processAndCollectAllParams: () => {} };\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n      if (key === 'clientParamBuilder.processAndCollectParams') return () => {};\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    const optinIdx = calls.indexOf('optinMetaEnabledCapi');\n    const initIdx = calls.indexOf('init');\n    assertThat(optinIdx).isGreaterThan(-1);\n    assertThat(initIdx).isGreaterThan(-1);\n    assertThat(optinIdx).isLessThan(initIdx);\n    assertApi('gtmOnSuccess').wasCalled();\n- name: optInMetaCAPI undefined - legacy tag still opts in\n  code: |-\n    // Old tags created before optInMetaCAPI existed have data.optInMetaCAPI === undefined.\n    // The runtime must treat undefined as opted-in (no re-save required after upgrade).\n    mockData.optInMetaCAPI = undefined;\n    let calls = [];\n    mock('callInWindow', (propName, arg1, arg2, arg3) => {\n      if (propName === 'fbq' && arg1 === 'gateCheck') {\n        if (typeof arg3 === 'function') arg3(true);\n      }\n      return true;\n    });\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        calls.push(arguments[0]);\n      };\n      if (key === 'fbq.callMethod.apply') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return { processAndCollectAllParams: () => {} };\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n      if (key === 'clientParamBuilder.processAndCollectParams') return () => {};\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    assertThat(calls).contains('optinMetaEnabledCapi');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: optInMetaCAPI false - fbq optin signal suppressed\n  code: |-\n    mockData.optInMetaCAPI = false;\n    let calls = [];\n    mock('callInWindow', (propName, arg1, arg2, arg3) => {\n      if (propName === 'fbq' && arg1 === 'gateCheck') {\n        if (typeof arg3 === 'function') arg3(true);\n      }\n      return true;\n    });\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        calls.push(arguments[0]);\n      };\n      if (key === 'fbq.callMethod.apply') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return { processAndCollectAllParams: () => {} };\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n      if (key === 'clientParamBuilder.processAndCollectParams') return () => {};\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    assertThat(calls).doesNotContain('optinMetaEnabledCapi');\n    assertThat(calls).contains('init');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: GK off pixel load successfully\n  code: \"// Reset the array instead of re-declaring it\\ninjectedUrls = [];\\n\\nmock('injectScript',\\\n    \\ (url, onsuccess, onfailure, token) => {\\n  injectedUrls.push(url);\\n  if (onsuccess)\\\n    \\ {\\n    onsuccess();\\n  }\\n});\\n\\n// Correctly target arg4 (onDisabled) to simulate\\\n    \\ the gateCheck failing\\nmock('callInWindow', (propName, arg1, arg2, arg3, arg4,\\\n    \\ arg5) => {\\n  if (propName === 'fbq' && arg1 === 'gateCheck') {\\n    const onDisabled\\\n    \\ = arg4; // arg4 is the onDisabled callback\\n    if (typeof onDisabled === 'function')\\\n    \\ {\\n      onDisabled(arg2, arg5); // Pass gateName and pixelID back to the callback\\n\\\n    \\    }\\n  }\\n  return true; \\n});\\n\\n// Run the template\\nrunCode(mockData);\\n\\\n    \\n// 1. Verify the template finished successfully\\nassertApi('gtmOnSuccess').wasCalled();\\n\\\n    assertApi('gtmOnFailure').wasNotCalled();\\n\\n// 2. Verify the Param Builder script\\\n    \\ was skipped\\nassertThat(injectedUrls).doesNotContain('https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js');\"\n- name: GA4 gate enabled - eventModel merged into tracking\n  code: |-\n    mockData.useGA4Ecommerce = true;\n    mockData.objectPropertyList = {};\n\n    var mockEventModel = {\n      currency: 'USD',\n      value: '99.99',\n      search_term: 'shoes',\n      transaction_id: 'order_abc',\n      items: [\n        { item_id: 'SKU1', price: 49.99, quantity: 2 },\n        { item_id: 'SKU2', item_name: 'Hat', price: 10.00, quantity: 1 }\n      ]\n    };\n\n    mock('copyFromDataLayer', key => {\n      if (key === 'eventModel') return mockEventModel;\n      return undefined;\n    });\n\n    var trackedProps = null;\n    let index = 0;\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'trackSingle') {\n          trackedProps = arguments[3];\n          index += 1;\n        }\n      };\n      if (key === 'fbq.callMethod.apply') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return { processAndCollectAllParams: () => {} };\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n      if (key === 'clientParamBuilder.processAndCollectParams') return () => {};\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    assertThat(index).isGreaterThan(0);\n    assertThat(trackedProps.currency).isEqualTo('USD');\n    assertThat(trackedProps.value).isEqualTo('99.99');\n    assertThat(trackedProps.search_string).isEqualTo('shoes');\n    assertThat(trackedProps.order_id).isEqualTo('order_abc');\n    assertThat(trackedProps.contents.length).isEqualTo(2);\n    assertThat(trackedProps.contents[0].id).isEqualTo('SKU1');\n    assertThat(trackedProps.contents[1].id).isEqualTo('SKU2');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: GA4 gate disabled - standard props used\n  code: |-\n    mockData.useGA4Ecommerce = true;\n    mockData.objectPropertyList = {};\n\n    mock('copyFromDataLayer', key => {\n      if (key === 'eventModel') return { currency: 'EUR', value: '50.00' };\n      return undefined;\n    });\n\n    // Mock gateCheck to call onDisabled for enable_gtm_ga4_structure\n    mock('callInWindow', (propName, arg1, arg2, arg3, arg4, arg5) => {\n      if (propName === 'fbq' && arg1 === 'gateCheck') {\n        if (arg2 === 'enable_gtm_ga4_structure') {\n          if (typeof arg4 === 'function') arg4(arg2, arg5);\n        } else {\n          if (typeof arg3 === 'function') arg3(arg2, arg5);\n        }\n      }\n      return true;\n    });\n\n    var trackedProps = null;\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'trackSingle') {\n          trackedProps = arguments[3];\n        }\n      };\n      if (key === 'fbq.callMethod.apply') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return { processAndCollectAllParams: () => {} };\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n      if (key === 'clientParamBuilder.processAndCollectParams') return () => {};\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    // Should NOT have GA4 fields since gate was disabled\n    assertThat(trackedProps.currency).isUndefined();\n    assertThat(trackedProps.search_string).isUndefined();\n    assertApi('gtmOnSuccess').wasCalled();\n- name: GA4 not enabled - unchanged behavior\n  code: |-\n    mockData.useGA4Ecommerce = false;\n\n    var trackCount = 0;\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'trackSingle') trackCount += 1;\n      };\n      if (key === 'fbq.callMethod.apply') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return { processAndCollectAllParams: () => {} };\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n      if (key === 'clientParamBuilder.processAndCollectParams') return () => {};\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    assertThat(trackCount).isEqualTo(2);\n    assertApi('gtmOnSuccess').wasCalled();\n- name: GA4 user_data merged into cidParams\n  code: |-\n    mockData.useGA4Ecommerce = true;\n    mockData.advancedMatchingList = [\n      {name: 'em', value: 'override@test.com'}\n    ];\n\n    var mockEventModel = {\n      user_data: {\n        email_address: 'ga4@test.com',\n        phone_number: '5551234567',\n        address: {\n          first_name: 'John',\n          last_name: 'Doe',\n          city: 'Menlo Park',\n          region: 'CA',\n          postal_code: '94025',\n          country: 'US'\n        }\n      }\n    };\n\n    mock('copyFromDataLayer', key => {\n      if (key === 'eventModel') return mockEventModel;\n      return undefined;\n    });\n\n    var initCidParams = null;\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return function() {\n        if (arguments[0] === 'init') initCidParams = arguments[2];\n      };\n      if (key === 'fbq.callMethod.apply') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return { processAndCollectAllParams: () => {} };\n      if (key === 'clientParamBuilder.processAndCollectAllParams') return () => {};\n      if (key === 'clientParamBuilder.processAndCollectParams') return () => {};\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    // advancedMatchingList 'em' should override ga4 user_data email_address\n    assertThat(initCidParams.em).isEqualTo('override@test.com');\n    // GA4 user_data fields should be present\n    assertThat(initCidParams.ph).isEqualTo('5551234567');\n    assertThat(initCidParams.fn).isEqualTo('John');\n    assertThat(initCidParams.ln).isEqualTo('Doe');\n    assertThat(initCidParams.ct).isEqualTo('Menlo Park');\n    assertThat(initCidParams.st).isEqualTo('CA');\n    assertThat(initCidParams.zp).isEqualTo('94025');\n    assertThat(initCidParams.country).isEqualTo('US');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: GK off pixel load failed\n  code: \"// Reset the array\\ninjectedUrls = [];\\n\\n// Mock injectScript to simulate\\\n    \\ a network error / loading failure\\nmock('injectScript', (url, onsuccess, onfailure,\\\n    \\ token) => {\\n  injectedUrls.push(url);\\n  \\n  // Notice we are calling onfailure()\\\n    \\ this time instead of onsuccess()\\n  if (onfailure) {\\n    onfailure(); \\n  }\\n\\\n    });\\n\\n// Run the template\\nrunCode(mockData);\\n\\n// 1. Verify failure was called\\\n    \\ and success was not\\nassertApi('gtmOnFailure').wasCalled();\\nassertApi('gtmOnSuccess').wasNotCalled();\\n\\\n    \\n// 2. Verify only the first script was attempted\\nassertThat(injectedUrls).contains('https://connect.facebook.net/en_US/fbevents.js');\\n\\\n    assertThat(injectedUrls).doesNotContain('https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js');\"\n- name: ParamBuilder already called in proc - loading state\n  code: \"// Simulate that the flag is already set from a previous event\\nmock('copyFromWindow',\\\n    \\ key => {\\n  if (key === '_fbq_param_builder_status') return 'loading'; \\n  if\\\n    \\ (key === 'fbq') return () => {};\\n  if (key === '_fbq_gtm_ids') return [];\\n\\\n    \\  return undefined;\\n});\\n\\ninjectedUrls = [];\\nlet processCalled = false;\\n\\n\\\n    // Monitor callInWindow to see if the param builder is executed\\nmock('callInWindow',\\\n    \\ (propName) => {\\n   if (propName === 'clientParamBuilder.processAndCollectAllParams'\\\n    \\ || \\n       propName === 'clientParamBuilder.processAndCollectParams') {\\n \\\n    \\    processCalled = true;\\n   }\\n   return true;\\n});\\n\\n// Run the template\\n\\\n    runCode(mockData);\\n\\n// 1. Verify it did NOT attempt to inject the script\\nassertThat(injectedUrls).doesNotContain('https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js');\\n\\\n    \\n// 2. Verify it did NOT call the function (saving the cookie write)\\nassertThat(processCalled).isFalse();\\n\\\n    \\n// 3. Verify the tag still finished successfully\\nassertApi('gtmOnSuccess').wasCalled();\"\n- name: ParamBuilder clientParamBuilder global undefined - graceful skip (not stuck\n    running)\n  code: |-\n    // Regression: Magento 2 checkout (Hyva/Luma) scenario where bundle loads but\n    // clientParamBuilder never attaches to window. Tag must not hang \"Still running\".\n    mock('injectScript', (url, onsuccess, onfailure, token) => {\n      if (onsuccess) onsuccess();\n    });\n\n    mock('callInWindow', (propName, arg1, arg2, arg3) => {\n      if (propName === 'fbq' && arg1 === 'gateCheck') {\n        if (typeof arg3 === 'function') arg3(true);\n      }\n      return true;\n    });\n\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return undefined;\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    assertApi('logToConsole').wasCalledWith(\"ERROR: clientParamBuilder wasn't loaded correctly.\");\n    assertApi('gtmOnSuccess').wasCalled();\n    assertApi('gtmOnFailure').wasNotCalled();\n- name: ParamBuilder script load fails - graceful skip (not stuck running)\n  code: |-\n    // Regression: Network error / CSP block on the ParamBuilder bundle URL must\n    // not leave the tag hanging or fail the whole pixel event.\n    injectedUrls = [];\n    mock('injectScript', (url, onsuccess, onfailure, token) => {\n      injectedUrls.push(url);\n      if (url === 'https://connect.facebook.net/en_US/fbevents.js') {\n        if (onsuccess) onsuccess();\n      } else {\n        if (onfailure) onfailure();\n      }\n    });\n\n    mock('callInWindow', (propName, arg1, arg2, arg3) => {\n      if (propName === 'fbq' && arg1 === 'gateCheck') {\n        if (typeof arg3 === 'function') arg3(true);\n      }\n      return true;\n    });\n\n    runCode(mockData);\n\n    assertThat(injectedUrls).contains('https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js');\n    assertThat(injectedUrls).contains('https://unpkg.com/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js');\n    assertApi('logToConsole').wasCalledWith('Facebook Pixel: Failed to load clientParamBuilder script');\n    assertApi('gtmOnSuccess').wasCalled();\n    assertApi('gtmOnFailure').wasNotCalled();\n- name: ParamBuilder failure clears loading status so subsequent tags can proceed\n  code: |-\n    // Regression: If we leave _fbq_param_builder_status === 'loading' forever,\n    // every subsequent tag fire on the page skips injection AND skips gtmOnSuccess\n    // path through gtmSuccess; more importantly, it masks the failure for observability.\n    let statusWrites = [];\n    mock('setInWindow', (key, val) => {\n      if (key === '_fbq_param_builder_status') statusWrites.push(val);\n    });\n\n    mock('injectScript', (url, onsuccess, onfailure, token) => {\n      if (onsuccess) onsuccess();\n    });\n\n    mock('callInWindow', (propName, arg1, arg2, arg3) => {\n      if (propName === 'fbq' && arg1 === 'gateCheck') {\n        if (typeof arg3 === 'function') arg3(true);\n      }\n      return true;\n    });\n\n    mock('copyFromWindow', key => {\n      if (key === 'fbq') return () => {};\n      if (key === '_fbq_gtm_ids') return [];\n      if (key === 'clientParamBuilder') return undefined;\n      return undefined;\n    });\n\n    runCode(mockData);\n\n    assertThat(statusWrites).contains('loading');\n    assertThat(statusWrites).contains('complete');\n    assertApi('gtmOnSuccess').wasCalled();\n- name: ParamBuilder already called in proc - complete state\n  code: \"// Simulate that the flag is already set from a previous event\\nmock('copyFromWindow',\\\n    \\ key => {\\n  if (key === '_fbq_param_builder_status') return 'complete'; \\n \\\n    \\ if (key === 'fbq') return () => {};\\n  if (key === '_fbq_gtm_ids') return [];\\n\\\n    \\  return undefined;\\n});\\n\\ninjectedUrls = [];\\nlet processCalled = false;\\n\\n\\\n    // Monitor callInWindow to see if the param builder is executed\\nmock('callInWindow',\\\n    \\ (propName) => {\\n   if (propName === 'clientParamBuilder.processAndCollectAllParams'\\\n    \\ || \\n       propName === 'clientParamBuilder.processAndCollectParams') {\\n \\\n    \\    processCalled = true;\\n   }\\n   return true;\\n});\\n\\n// Run the template\\n\\\n    runCode(mockData);\\n\\n// 1. Verify it did NOT attempt to inject the script\\nassertThat(injectedUrls).doesNotContain('https://cdn.jsdelivr.net/npm/meta-capi-param-builder-clientjs/dist/clientParamBuilder.bundle.js');\\n\\\n    \\n// 2. Verify it did NOT call the function (saving the cookie write)\\nassertThat(processCalled).isFalse();\\n\\\n    \\n// 3. Verify the tag still finished successfully\\nassertApi('gtmOnSuccess').wasCalled();\"\nsetup: \"const mockData = {\\n  pixelId: '12345,23456',\\n  eventName: 'standard',\\n\\\n  \\  standardEventName: 'PageView',\\n  customEventName: 'custom',\\n  variableEventName:\\\n  \\ 'standard',\\n  consent: true,\\n  advancedMatching: false,\\n  advancedMatchingList:\\\n  \\ [\\n    {name: 'ct', value: 'Helsinki'},\\n    {name: 'cn', value: 'Finland'}\\n\\\n  \\  ],\\n  objectPropertiesFromVariable: false,\\n  objectPropertyList: [\\n    {name:\\\n  \\ 'prop1', value: 'val1'},\\n    {name: 'prop2', value: 'val2'}\\n  ],\\n  disableAutoConfig:\\\n  \\ false,\\n  disablePushState: false,\\n  enhancedEcommerce: false,\\n  eventId: '',\\n\\\n  \\  gtmOnSuccess: () => {},\\n  gtmOnFailure: () => {}\\n};\\n\\n// Restored to YOUR\\\n  \\ original structure!\\nconst mockEec = {\\n  gtm: {  \\n    products: [{\\n      id:\\\n  \\ 'i1',\\n      name: 'n1',\\n      category: 'c1',\\n      price: '1.00',\\n      quantity:\\\n  \\ 1\\n    },{\\n      id: 'i2',\\n      name: 'n2',\\n      category: 'c2',\\n      price:\\\n  \\ '2.00',\\n      quantity: 2\\n    }]\\n  },\\n  fb: {\\n    content_type: 'product',\\n\\\n  \\    contents: [{\\n      id: 'i1',\\n      quantity: 1\\n    },{\\n      id: 'i2',\\n\\\n  \\      quantity: 2\\n    }],\\n    currency: 'EUR',\\n    value: 5.00\\n  }\\n};\\n\\n\\\n  let injectedUrls = [];\\n\\nmock('injectScript', (url, onsuccess, onfailure, token)\\\n  \\ => {\\n  injectedUrls.push(url);\\n  if (onsuccess) {\\n    onsuccess();\\n  }\\n});\\n\\\n  \\nmock('callInWindow', (propName, arg1, arg2, arg3, arg4, arg5) => {\\n  if (propName\\\n  \\ === 'fbq' && arg1 === 'gateCheck') {\\n    const gateName = arg2;\\n    const onEnabled\\\n  \\ = arg3;\\n    const onDisabled = arg4;\\n    const pixelID = arg5;\\n    \\n    if\\\n  \\ (typeof onEnabled === 'function') {\\n      onEnabled(gateName, pixelID); \\n  \\\n  \\  }\\n  }\\n  return true; \\n});\\n\\nmock('copyFromWindow', key => {\\n  if (key ===\\\n  \\ 'fbq') return () => {};\\n  if (key === 'fbq.callMethod.apply') return () => {};\\n\\\n  \\  if (key === '_fbq_gtm_ids') return [];\\n  \\n  if (key === 'clientParamBuilder')\\\n  \\ {\\n    return {\\n      processAndCollectAllParams: () => {},\\n      processAndCollectParams:\\\n  \\ () => {}\\n    };\\n  }\\n  if (key === 'clientParamBuilder.processAndCollectAllParams')\\\n  \\ return () => {};\\n  if (key === 'clientParamBuilder.processAndCollectParams')\\\n  \\ return () => {};\\n  \\n  return undefined;\\n});\\n\\n// We return a dummy object\\\n  \\ here, but your tests will override it to use mockEec.gtm\\nmock('copyFromDataLayer',\\\n  \\ (key) => { \\n  return undefined;\\n});\\n\\nmock('getUrl', () => 'https://example.com');\\n\\\n  mock('logToConsole', () => {});\\nmock('createQueue', () => {});\\nmock('setInWindow',\\\n  \\ () => {});\\nmock('aliasInWindow', () => {});\"\n\n\n___NOTES___\n\nCreated on 18/05/2019, 21:57:16\n\n\n",
        "galleryReference": {
          "host": "github.com",
          "owner": "meta",
          "repository": "GoogleTagManager-WebTemplate-For-FacebookPixel",
          "version": "08b9bbba509d6f10f6ad2bd39207ed814e96cbbe",
          "signature": "6914f23febfcc19825e1c2093770ad941ebe785764cadf1baa71b3ae32e30d8a",
          "galleryTemplateId": "5RM3Q"
        },
        "accountId": "0",
        "containerId": "0"
      }
    ],
    "builtInVariable": [
      {
        "type": "EVENT",
        "name": "Event"
      }
    ]
  }
}
