Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Search our knowledge base, curated by global Support, for answers ranging from account questions to troubleshooting error messages.
Qlik offers a wide range of channels to assist you in troubleshooting, answering frequently asked questions, and getting in touch with our technical experts. In this article, we guide you through all available avenues to secure your best possible experience.
For details on our terms and conditions, review the Qlik Support Policy.
Index:
We're happy to help! Here's a breakdown of resources for each type of need.
Support | Professional Services (*) | |
Reactively fixes technical issues as well as answers narrowly defined specific questions. Handles administrative issues to keep the product up-to-date and functioning. | Proactively accelerates projects, reduces risk, and achieves optimal configurations. Delivers expert help for training, planning, implementation, and performance improvement. | |
|
|
(*) reach out to your Account Manager or Customer Success Manager
Your first line of support: https://community.qlik.com/
Looking for content? Type your question into our global search bar:
Leverage the enhanced and continuously updated Knowledge Base to find solutions to your questions and best practice guides. Bookmark this page for quick access!
Subscribe to maximize your Qlik experience!
The Support Updates Blog
The Support Updates blog delivers important and useful Qlik Support information about end-of-product support, new service releases, and general support topics. (click)
The Qlik Design Blog
The Design blog is all about product and Qlik solutions, such as scripting, data modelling, visual design, extensions, best practices, and more! (click)
The Product Innovation Blog
By reading the Product Innovation blog, you will learn about what's new across all of the products in our growing Qlik product portfolio. (click)
Q&A with Qlik
Live sessions with Qlik Experts in which we focus on your questions.
Techspert Talks
Techspert Talks is a free webinar to facilitate knowledge sharing held on a monthly basis.
Technical Adoption Workshops
Our in depth, hands-on workshops allow new Qlik Cloud Admins to build alongside Qlik Experts.
Qlik Fix
Qlik Fix is a series of short video with helpful solutions for Qlik customers and partners.
Suggest an idea, and influence the next generation of Qlik features!
Search & Submit Ideas
Ideation Guidelines
Get the full value of the community.
Register a Qlik ID:
Incidents are supported through our Chat, by clicking Chat Now on any Support Page across Qlik Community.
To raise a new issue, all you need to do is chat with us. With this, we can:
Log in to manage and track your active cases in Manage Cases. (click)
Please note: to create a new case, it is easiest to do so via our chat (see above). Our chat will log your case through a series of guided intake questions.
When creating a case, you will be prompted to enter problem type and issue level. Definitions shared below:
Select Account Related for issues with your account, licenses, downloads, or payment.
Select Product Related for technical issues with Qlik products and platforms.
If your issue is account related, you will be asked to select a Priority level:
Select Medium/Low if the system is accessible, but there are some functional limitations that are not critical in the daily operation.
Select High if there are significant impacts on normal work or performance.
Select Urgent if there are major impacts on business-critical work or performance.
If your issue is product related, you will be asked to select a Severity level:
Severity 1: Qlik production software is down or not available, but not because of scheduled maintenance and/or upgrades.
Severity 2: Major functionality is not working in accordance with the technical specifications in documentation or significant performance degradation is experienced so that critical business operations cannot be performed.
Severity 3: Any error that is not Severity 1 Error or Severity 2 Issue. For more information, visit our Qlik Support Policy.
If you require a support case escalation, you have two options:
When other Support Channels are down for maintenance, please contact us via phone for high severity production-down concerns.
A collection of useful links.
Qlik Cloud Status Page
Keep up to date with Qlik Cloud's status.
Support Policy
Review our Service Level Agreements and License Agreements.
Live Chat and Case Portal
Your one stop to contact us.
A third-party certificate was configured in the Qlik Sense Proxy, but is not being used.
The connection is not private" NET::ERR_CERT_COMMON_NAME_INVALID may be displayed on HUB access.
Qlik Sense Enterprise on Windows uses self-signed and self-generated certificates to protect communication between services, as well as user web traffic to the hub and management console. It is possible to use a third-party-issued SSL certificate to protect client web traffic. Using the self-signed certificate will cause a certificate warning to be displayed in the web browser (such as Google Chrome or Internet Explorer).
If the third-party certificate for the Qlik Sense Proxy Service is not fully compatible with Qlik Sense or it does not have the correct attributes and cyphers, the Qlik Sense Repository Service will revert to using the default certificates. The following error may occur in the Proxy Security logs:
Example: C:\ProgramData\Qlik\Sense\Log\Proxy\Trace\HOSTNAME_Security_Proxy.txt
No private key found for certificate 'CN=qliksense.domain.com' ([CERTIFICATE THUMBPRINT HERE]) Couldn't find a valid ssl certificate with thumbprint [CERTIFICATE THUMBPRINT HERE] Reverting to default Qlik Sense SSLCertificate Set certificate 'CN=qliksenseserver1.domain.com' ([CERTIFICATE THUMBPRINT HERE]) as SSL certificate presented to browser
In order for Qlik Sense Enterprise to correctly recognize the third-party certificate as valid, the certificate will have to meet the following requirements:
Note: Root and Intermediate CA certificates need to be correctly installed. Should any be missing, Qlik Sense proxy will not use the server certificate and will revert back to using the self-signed certificate instead.
Certificates that are known to work well with Qlik Sense have the following attributes:
How to: Change the certificate used by the Qlik Sense Proxy to a custom third party certificate
Qlik Sense offers a range of Monitoring Applications that come pre-installed with the product. This article aims to provide information on where to find information about them or where to download them.
The Entitlement Analyzer is a Qlik Sense application built for Qlik Cloud, which provides Entitlement usage overview for your Qlik Cloud tenant.
The app provides:
For more information and to download the app and usage instructions, see The Entitlement Analyzer for Qlik Cloud.
The App Analyzer is a Qlik Sense application built for Qlik Cloud, which helps you to analyze and monitor Qlik Sense applications in your tenant.
The app provides:
For more information and to download the app and usage instructions, see Qlik Cloud App Analyzer.
The Reload Analyzer is a Qlik Sense application built for Qlik Cloud, which provides an overview of data refreshes for your Qlik Cloud tenant.
The app provides:
For more information and to download the app and usage instructions, see Qlik Cloud Reload Analyzer.
The Access Evaluator is a Qlik Sense application built for Qlik Cloud, which helps you to analyze user roles, access, and permissions across a tenant.
The app provides:
For more information and to download the app and usage instructions, see Qlik Cloud Access Evaluator.
Do you want to automate the installation, upgrade, and management of your Qlik Cloud Monitoring apps? With the Qlik Cloud Monitoring Apps Workflow, made possible through Qlik's Application Automation, you can:
For more information and usage instructions, see Qlik Cloud Monitoring Apps Workflow Guide.
This article shows how to use the Qlik Application Automation Monitoring App. It explains how to set up the load script and how to use the app for monitoring Qlik Application Automation usage statistics for a cloud tenant.
For more information and to download the app and usage instructions, see Qlik Application Automation monitoring app.
The OEM Dashboard is a Qlik Sense application for Qlik Cloud designed for OEM partners to centrally monitor usage data across their customers’ tenants. It provides a single pane to review numerous dimensions and measures, compare trends, and quickly spot issues across many different areas.
Although this dashboard is designed for OEMs, it can also be used by partners and customers who manage more than one tenant in Qlik Cloud.
For more information and to download the app and usage instructions, see Qlik Cloud OEM Dashboard & Console Settings Collector.
The Qlik Cloud monitoring applications are provided as-is and are not supported by Qlik. Over time, the APIs and metrics used by the apps may change, so it is advised to monitor each repository for updates and to update the apps promptly when new versions are available.
If you have issues while using these apps, support is provided on a best-efforts basis by contributors to the repositories on GitHub.
The Operations Monitor loads service logs to populate charts covering performance history of hardware utilization, active users, app sessions, results of reload tasks, and errors and warnings. It also tracks changes made in the QMC that affect the Operations Monitor.
The License Monitor loads service logs to populate charts and tables covering token allocation, usage of login and user passes, and errors and warnings.
For a more detailed description of the sheets and visualizations in both apps, visit the story About the License Monitor or About the Operations Monitor that is available from the app overview page, under Stories.
Basic information can be found here:
The License Monitor
The Operations Monitor
Both apps come pre-installed with Qlik Sense.
If a direct download is required: Sense License Monitor | Sense Operations Monitor. Note that Support can only be provided for Apps pre-installed with your latest version of Qlik Sense Enterprise on Windows.
The App Metadata Analyzer app provides a dashboard to analyze Qlik Sense application metadata across your Qlik Sense Enterprise deployment. It gives you a holistic view of all your Qlik Sense apps, including granular level detail of an app's data model and its resource utilization.
Basic information can be found here:
App Metadata Analyzer (help.qlik.com)
For more details and best practices, see:
App Metadata Analyzer (Admin Playbook)
The app comes pre-installed with Qlik Sense.
Looking to discuss the Monitoring Applications? Here we share key versions of the Sense Monitor Apps and the latest QV Governance Dashboard as well as discuss best practices, post video tutorials, and ask questions.
LogAnalysis App: The Qlik Sense app for troubleshooting Qlik Sense Enterprise on Windows logs
Sessions Monitor, Reloads-Monitor, Log-Monitor
Connectors Log Analyzer
All Other Apps are provided as-is and no ongoing support will be provided by Qlik Support.
Disclaimer: Encrypted communication between PostgreSQL database and Qlik Sense services is a supported setup. This article provides general guidance on how to enable encryption on PostgreSQL database server, but local adjustment must be applied to comply with local IT requirements. Please be aware that Qlik Support can not help setting up Database Traffic Encryption, while Qlik Consulting Services may be utilized for deployment implementation.
Qlik Sense supports database traffic encryption using SSL/TLS, but it is not enabled by default. The Qlik Sense installer cannot use SSL encryption for establishing a connection to PostgreSQL. When SSL encryption is enabled, the installer does not recognize any already installed PostgreSQL databases, and as a consequence, installation cannot be completed. Password security and local IT policy around certificate need to be considered before enabling database encryption, as the implementation includes manual configuration of the Qlik Sense deployment.
Qlik recommends that the configuration in this section is performed by someone with sufficient skills in PostgreSQL database configuration.
This article covers two scenarios for enabling Database Traffic Encryption;
Upgrades: Prior to Qlik Sense Enterprise August 2022 release, the Qlik Sense installer cannot use SSL encryption for establishing a connection to PostgreSQL. So any upgrades will fail unless you are upgrading to August 2022 and later. Prior to upgrading, disable the encryption. You can enable it again after the upgrade is complete.
See Unable to upgrade Qlik Sense with missing 'SenseServices', 'QSMQ', and 'Licenses' database for respective capabilities.
Always take a complete backup of Qlik Sense deployment before altering system configuration, to allow restoring a working state in case of disaster.
These scenarios apply the default Qlik Sense signed certificate to encrypt traffic for a PostgreSQL database. Qlik Sense signed certificate is commonly only fully trusted by Qlik Sense nodes, which means other usage may not comply with local IT policies. It is recommended that a fully trusted certificate is used when applying encrypted database traffic for production environments. Consult the local IT department for details on retrieving a fully trusted certificate.
This scenario assumes a standard Qlik Sense installation, where the Qlik Sense Repository Database is installed on the Qlik Sense central node as part of the Qlik Sense installation.
This scenario assumes a custom Qlik Sense installation, where Qlik Sense is configured to use a dedicated PostgreSQL database as its Repository Database.
While actively using a Qlik Sense document or when attempting to open the same document a second time, one of the following errors is displayed:
An error occurred
Connection lost. Make sure that Qlik Sense is running properly. If your session has timed out due to inactivity, refresh to continue working.
Error code: 16
An error occurred
The app you specified could not be found.
Error code: 1003
First, refresh the browser by clicking its Refresh button. This will prompt error 1003.
Error 16 was observed when a developer was working on an app and a unaware colleague published at same time the app on a stream changing also for load balancing rules the expected Engine node.
Error 1003 was observed in case there is cached Proxy Session against an Engine node that for the new context Load Balancing rules is not allowed to load the App.
Using Log Off will invalidate the current caching for that User ←→ Proxy ←→ Engines.
R&D is aware of the above two customer context workflow scenarios and will review session cache invalidation flow.
QB-25180, QB-27321
Get "error 404 - not found" The following URL is Unknown:/hub/ when accessing QlikSense Hub.
Qlik Sense, All versions
If you change the default prefix you can no longer access the QMC or HUB with the standard url.
1. If you know the prefix you changed to, add it before /hub
"YourServerName/prefix/hub/"
2. If you are not sure what you changed it to
To help Qlik customers manage costs more effectively, Qlik has developed the Qlik Snowflake Monitoring application, designed to provide invaluable insights about your Snowflake costs, usage, inventory, security, performance and contract utilization. This app utilizes Qlik's Associative Engine to connect directly to your Snowflake instance and reveal insights from Snowflake's detailed metadata, offering valuable information that traditional query-based tools and Snowflake's own reports are unable to provide.
Leveraging Qlik Application Automation, and Data Alerts, you can:
*Minor configuration is required on first run to create the required data connections.
Content:
This automation template is a fully guided installer/updater for the Qlik Snowflake Monitor. Leverage this automation template to easily install and update this application. The application itself is community-supported; and it is provided through Qlik’s Open-Source Software GitHub and thus is subject to Qlik’s open-source guidelines & policies.
For more information, refer to the GitHub Repository.
If the monitoring app was installed manually (i.e. not through the application automation installer), then the app will not be detected as existing. The automation will install new copies side-by-side. Any subsequent executions of the automation will detect the newly installed monitoring application and check their versions. This is because the application is tagged with ‘QCS - QSM - {App Name}’ and ‘QCS – QSM - {Version}’ during the installation process through the automation. Manually installed applications will not have these tags and therefore will not be detected.
The Qlik Snowflake Monitor requires two connections, one to your Snowflake instance to feed the data for your analytics, and one REST connection to the qlik-oss repository to run a version check on the monitor.
You will need to create a custom User, Role and Warehouse on your snowflake tenant. This is to ensure this user and role can see the monitoring details and can be monitored.
For Authentication, this setup is defaulted to username & password.
Finally, you need to name the connection as follows:
If you wish to use an alternative authentication method, please follow the documentation accordingly on both Snowflake & Qlik.
The REST connection is used to fetch version details from the GitHub repository. On reload it will look for the the latest released version in github and check this against the version you have installed. You can later use this in ‘Part Three’ to create an alert when updates to the application are available. To create a REST connection the following information is required:
Once these two connections have been set up, you can reload the application. The application has been created to accommodate Snowflake tenants of all sizes. If you have a small tenant, you will find the initial run of the load script can take around 30 minutes, and for larger tenants this can be over an hour or two. Subsequent runs will utilize cached QVDs that update daily to reduce reload times each subsequent day.
If a new release of the application is made, occasionally a full reload of data is required, but generally, if the data schema is unchanged the existing QVDs will be maintained. This is through the use of versions in the names of the QVDs used to store the data.
The application has the following two variables:
To create a new Data Alert for updates to the monitoring app, follow these steps:
The Qlik Snowflake Monitor can be easily installed by following these steps above. If you wish to find out more, check out this Ometis blog post and this Ometis Webinar to get a run through of the analytics this application can offer.
If you face any issues, please use the GitHub and raise an issue through the repository.
The QlikView Desktop client or IE Plugin return the error:
Connected server OK, negotiations timed out Switching to HTTP tunneling Connected to server OK, No reply received
Documents cannot be opened and Licenses cannot be leased. Port 4747 is available.
If extended error logging is enabled on the QlikView server, in the extended error log, users may see the following error:
2017-08-15 17:22:58 Info General QVDoc.cpp 4297 Trying TCP/IP connection [<servername>:4747] 0
2017-08-15 17:22:58 Warning Connect CryptAcquire.cpp 97 Could not CryptSetProvParam 1008 An attempt was made to reference a token that does not exist.
2017-08-15 17:23:02 Error Connect ClientKeyExchange.cpp 59 Could not CryptGenKey 5 Access is denied.
2017-08-15 17:23:02 Warning General Context_qv.cpp 527 Server closed connection 0
2017-08-15 17:23:02 Warning Connect ClientServerSupport.cpp 585 Server denied connection: "" 0
There are two common root causes for this scenario:
This indicates that the user running the QlikView client does not have permissions to read/write to and from the RSA\MachineKeys directory. Contact a System Administrator to grand full-access right to:
Timeout value set is not long enough for the client and server to negotiate the connection. This can happen if the client is not in the same geographic location as the QVServer or other network latency issues are occurring in the environment.
To configure the timeout setting:
Open in Server fails using QlikView Desktop May 2023 or later against earlier version of QlikView Server
Communication to QlikView server fails: Switching to HTTPS tunneling
After an upgrade to Qlik Replicate 2023.11.0.282(SP02), tasks fail with:
[TARGET_APPLY ]T: Failed to execute statement. Error is: RetCode: SQL_ERROR SqlState: 23000 NativeError: 2627 Message: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Violation of PRIMARY KEY constraint 'ticket_history_PRIMARY'. Cannot insert duplicate key in object 'dbo.ticket_history'. The duplicate key value is (3155326).
This is caused by RECOB-7967.
Upgrade to Qlik Replicate 2023.11 SP03.
The Qlikview server has been set up with Kerberos authentication. When navigating to the QlikView Management Console the following errors are printed:
Login Failed
This web page cannot be displayed
Environments:
Kerberos authentication is not supported in the QlikView Management Console.
For information regarding the AccessPoint, see Kerberos support using QlikView Webserver
In SAP BW, the table has data with a leading single space (example: " Z438"). When Qlik Replicate retrieves data from ODP, it removes this leading space and sends only "Z438", resulting in duplicate records in the Snowflake target.
In SAP BW: Two separate records are shown.
In Snowflake: Duplicate records are shown.
This is caused by RECOB-8328.
Upgrade to Qlik Replicate 2023.11 SP05.
A table using Oracle as the Source Endpoint and Redshift as a Target is suspended with an Unable to build WHERE clause error.
The log file reads:
]W: Table 'TABLE' (subtask 0 thread 1) is suspended. Unable to build WHERE clause, statement: 'UPDATE "gf"."gl_ledgers" SET "name"='NAME', "latest_opened_period_name"='MAY-24' WHERE '; Failed to build update statement for change with stream position '894;638506957348087170;20240404182035014433|00000ef5.73cc0593.00000002.0001.02.0000:168736.6872806.16' (replicationtask.c:3147)
Change the target DDL to make the NAME column the primary key and re-running the task.
Reviewing the diagnostic packages and DDL lead to the following conclusion:
The source unique index was considered on the NAME column because Qlik Replicate prioritizes unique indexes in alphabetical order if there are more than one unique index. In this case, the table has three unique indexes: NAME, LEDGER_ID, and SHORT_NAME.
Qlik Replicate considered the NAME column from the source as the unique index, but the target DDL was created on LEDGER_ID, which could be causing the issue.
DISTSTYLE ALL
SORTKEY ( ledger_id )
Configuring a tenant to use AWS Key Management Service (KMS) in Qlik Cloud Data Integration (QCDI) fails with:
Unable to describe the provided Amazon Resource Names (ARN). Error code: The policy of the provided key does not allow to know key type is Single-region or Multi-region
Qlik Cloud no longer support single-region keys. A multi-region primary CMK needs to be created along with a replica key by complying with the backup region. See Configuring tenant encryption.
Qlik Replicate CDC tasks writing to a Databricks target may not show their Error Handling options correctly. Error Handling cannot be configured.
Example screenshot:
This is caused by RECOB-8452.
Upgrade to Qlik Replicate version 2023.11 SP05.
At Qonnections 2019 I hosted a session called "273367 Qlik Sense Visualizations, best practice and top tricks". Here's the app I used with all tips including test data. Tip titles, more details in app:
* Chart and UI *
Butterfly chart
Gantt chart
Grid chart
Dynamic charts
Map image background
Previous/next in selection
Cyclic groups
Dividers
Date search filters
Dynamic bookmark
Select null
* Add ons *
Above and below
Color above average
Bell curves
Trendlines
Accumulation
Top 5 lines
Offset measures
* Table *
Custom report
Change null color
Sum with null
Subtotals and empty rows
Indentation
Indicators and symbols
Traffic lights
Pajama striping
Sparklines
Link to app
There is also video available: https://www.youtube.com/watch?v=fIOcb_JGNb4&t=3s
I want to emphasize that many of the tips are discovered by others than me, I tried to credit the original author at all places when possible. Many of the tips have been published before on the Qlik Community, the app below can be viewed as my current top picks.
If you liked it, here's more in the same style:
Thanks,
Patric
Upgrading the Qlik Sense Enterprise on Windows PostgreSQL instance using QPI (Upgrading and unbundling the Qlik Sense Repository Database using the Qlik PostgreSQL Installer) fails.
The following is logged in the installation log file:
[ERR] Error! Exception when trying to stop Service: QlikSenseRepositoryDatabase in: 60 s: Cannot open 'QlikSenseRepositoryDatabase' service on computer '.'.. Please make sure you are running the application as an administrator.
[INF] QlikSenseRepositoryDatabase was stopped
[WRN] The service: QlikSenseRepositoryDatabase could not be stopped, tryin to kill process...
[INF] Trying to kill process: 7440
[INF] Found process, checking status
[INF] Could not kill process for some reason: Access denied
[ERR] Error! Failure while: QlikSenseRepositoryDatabase
For information on how to locate the Qlik Sense Installation logs, see How To Collect Qlik Sense Installation Log File.
Ensure the setup file is "Unblocked" and accessible for installation.
The account that is running the setup does not have access permissions.
Qlik PostgreSQL Installer (QPI)
The Qlik Sense Management Console and Hub do not load and reviewing the Qlik Sense Proxy logs (C:\ProgramData\Qlik\Sense\Log\Proxy) shows:
Proxy will NOT be listening to port 443, likely bound by another process An attempt was made to access a socket in a way forbidden by its access permissions.
The port required by the Qlik Sense Proxy is likely being bound by a different process such as a third party web server.
Verify what process is using the port and terminate or reconfigure the software as required.
See How to check which program is using a specific port for details.
Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. You can use Amazon DynamoDB connector to make changes and perform various action on database tables and items within those tables, specific to a region or global.
This article explains how the Amazon DynamoDB connector in Qlik Application Automation can be used within Qlik Cloud.
Content
By default, users and roles don't have permission to create or modify DynamoDB resources. They cannot perform tasks using the AWS Management Console, AWS Command Line Interface (AWS CLI), or AWS API. To grant users permission to perform actions on the resources that they need, an IAM administrator can create IAM policies. The administrator can then add the IAM policies to roles, and users can assume the roles.
To learn how to create an IAM identity-based policy by using these sample JSON policy documents, see Creating IAM policies in the IAM User Guide.
The Amazon Bedrock connector consists of the following blocks:
The Amazon DynamoDB connector's Put/Update Item blocks can be programed for diverse tasks including:
The Amazon DynamoDB connector allows you to write back App data to the source database. If clients do not have access to their firm's database, the company may offer an update on the Item. We can utilize the Put/Update blocks which can then update the database.
Refer to How to build a write back solution with native Qlik Sense components and Qlik Application Automation for instructions on how to configure the writeback. In the automation, instead of using the JIRA connector.
Use the Amazon DynamoDB connector's Put Item/Update Item block, as illustrated:
Edits an existing item's attributes, or adds a new item to the table if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update on an existing item (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values).
*In API terms, this endpoint behaves like a PATCH method which can perform partial updates.
Creates a new item, or replaces an old item with a new item. If an item that has the same primary key as the new item already exists in the specified table, the new item completely replaces the existing item. You can perform a conditional put operation (add a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values. You can return the item's attribute values in the same operation, using the ReturnValues parameter.
To manipulate data in an Amazon DynamoDB table, you use the 'Put Item', 'Update Item' etc. operations.
For these data manipulation operations, you can specify a condition expression to determine which items should be modified. If the condition expression evaluates to true, the operation succeeds; otherwise, the operation fails.
An expression that defines one or more attributes to be updated, the action to be performed on them, and new values for them.
One or more values that can be substituted in an expression.
Examples of Update Expressions, Conditions Expressions, and Expression Attribute Values:
What is the default user session timeout for Qlik Sense Business and Qlik Sense Enterprise SaaS? Can the session timeout for Qlik Cloud be changed?
The default (fixed) value is set to 30 minutes. This is controlled by SESSION_TTL.
It is not currently possible to adjust the session timeouts in the Qlik Cloud.